@growupsell/react-ecommerce-core 2.0.13 → 2.0.16

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/index.d.cts CHANGED
@@ -165,6 +165,8 @@ declare const ProductDetailContext: React__default.Context<{
165
165
  type Props$2 = {
166
166
  productId: any;
167
167
  selected_variants: any;
168
+ /** Server-fetched product detail for SSR / first paint (crawlers + LCP). */
169
+ initialProductDetail?: any;
168
170
  };
169
171
  declare const ProductDetailProvider: (props: React__default.PropsWithChildren<Props$2>) => react_jsx_runtime.JSX.Element;
170
172
  declare const useProductDetail: () => {
@@ -237,6 +239,8 @@ declare const HomeConfigContext: React__default.Context<{
237
239
  declare const HomeConfigProvider: (props: {
238
240
  page: string;
239
241
  children: React__default.ReactNode;
242
+ /** Server-fetched theme content for SSR / first paint (crawlers). */
243
+ initialThemeContent?: any;
240
244
  }) => react_jsx_runtime.JSX.Element;
241
245
  declare const useHomeConfig: () => {
242
246
  selectedConfig: any[];
@@ -276,15 +280,6 @@ declare const useCustomPageConfig: () => {
276
280
  loading: boolean;
277
281
  };
278
282
 
279
- /**
280
- * Bridges the custom-page provider into the shared HeroSlider context.
281
- * CustomPageConfigProvider owns both block and hero state so saves cannot race.
282
- */
283
- declare const CustomPageHeroSliderProvider: (props: {
284
- pageId: number;
285
- children: React__default.ReactNode;
286
- }) => react_jsx_runtime.JSX.Element;
287
-
288
283
  declare const WishlistContext: React__default.Context<{
289
284
  wishlistItems: any[];
290
285
  addToWishlist: (sku: any) => void;
@@ -391,6 +386,8 @@ declare const HomeConfigHeroSliderContext: React__default.Context<{
391
386
  }>;
392
387
  declare const HomeConfigHeroSliderProvider: (props: {
393
388
  children: React__default.ReactNode;
389
+ /** Server-fetched theme content for SSR / first paint (crawlers). */
390
+ initialThemeContent?: any;
394
391
  }) => react_jsx_runtime.JSX.Element;
395
392
  declare const useHomeConfigHeroSlider: () => {
396
393
  loading: boolean;
@@ -408,6 +405,8 @@ declare const HeaderFooterContext: React__default.Context<{
408
405
  declare const HeaderFooterProvider: (props: {
409
406
  page: string;
410
407
  children: React__default.ReactNode;
408
+ /** Server-fetched theme content for SSR / first paint (crawlers). */
409
+ initialThemeContent?: any;
411
410
  }) => react_jsx_runtime.JSX.Element;
412
411
  declare const useHeaderFooter: () => {
413
412
  headerConfig: any;
@@ -529,4 +528,4 @@ type Props = {
529
528
  declare const LiveSupportWidgetProvider: React__default.FC<Props>;
530
529
  declare const useLiveSupportWidget: () => LiveSupportWidgetContextValue;
531
530
 
532
- export { AuthContext, AuthProvider, BaseProvider, BusinessConfigProvider, BusinessMediaContext, BusinessMediaProvider, CartContext, CartProvider, CartWishlistRefreshContext, CartWishlistRefreshProvider, CustomPageConfigContext, CustomPageConfigProvider, CustomPageHeroSliderProvider, CustomerConfigContext, CustomerConfigProvider, FilterContext, FilterProvider, HeaderFooterContext, HeaderFooterProvider, HomeConfigContext, HomeConfigHeroSliderContext, HomeConfigHeroSliderProvider, HomeConfigProvider, LiveSupportWidgetProvider, MenuCartContext, MenuCartProvider, MenuFilterContext, MenuFilterProvider, ModalProvider, ProductConfigContext, ProductConfigProvider, ProductDetailContext, ProductDetailProvider, ReferralCodeProvider, StorageContext, StorageProvider, ThemeEditContext, ThemeEditProvider, type ToastSupportApi, type ToastSupportOptions, ToastSupportProvider, WishlistContext, WishlistProvider, useAuth, useBusiness, useBusinessContext, useBusinessMedia, useCart, useCartWishlistRefresh, useCustomPageConfig, useCustomer, useFilter, useHeaderFooter, useHomeConfig, useHomeConfigHeroSlider, useLiveSupportWidget, useMenuCart, useMenuFilter, useModal, useProductConfig, useProductDetail, useReferralCode, useStorage, useThemeEdit, useToastSupport, useWishlist };
531
+ export { AuthContext, AuthProvider, BaseProvider, BusinessConfigProvider, BusinessMediaContext, BusinessMediaProvider, CartContext, CartProvider, CartWishlistRefreshContext, CartWishlistRefreshProvider, CustomPageConfigContext, CustomPageConfigProvider, CustomerConfigContext, CustomerConfigProvider, FilterContext, FilterProvider, HeaderFooterContext, HeaderFooterProvider, HomeConfigContext, HomeConfigHeroSliderContext, HomeConfigHeroSliderProvider, HomeConfigProvider, LiveSupportWidgetProvider, MenuCartContext, MenuCartProvider, MenuFilterContext, MenuFilterProvider, ModalProvider, ProductConfigContext, ProductConfigProvider, ProductDetailContext, ProductDetailProvider, ReferralCodeProvider, StorageContext, StorageProvider, ThemeEditContext, ThemeEditProvider, type ToastSupportApi, type ToastSupportOptions, ToastSupportProvider, WishlistContext, WishlistProvider, useAuth, useBusiness, useBusinessContext, useBusinessMedia, useCart, useCartWishlistRefresh, useCustomPageConfig, useCustomer, useFilter, useHeaderFooter, useHomeConfig, useHomeConfigHeroSlider, useLiveSupportWidget, useMenuCart, useMenuFilter, useModal, useProductConfig, useProductDetail, useReferralCode, useStorage, useThemeEdit, useToastSupport, useWishlist };
package/dist/index.d.ts CHANGED
@@ -165,6 +165,8 @@ declare const ProductDetailContext: React__default.Context<{
165
165
  type Props$2 = {
166
166
  productId: any;
167
167
  selected_variants: any;
168
+ /** Server-fetched product detail for SSR / first paint (crawlers + LCP). */
169
+ initialProductDetail?: any;
168
170
  };
169
171
  declare const ProductDetailProvider: (props: React__default.PropsWithChildren<Props$2>) => react_jsx_runtime.JSX.Element;
170
172
  declare const useProductDetail: () => {
@@ -237,6 +239,8 @@ declare const HomeConfigContext: React__default.Context<{
237
239
  declare const HomeConfigProvider: (props: {
238
240
  page: string;
239
241
  children: React__default.ReactNode;
242
+ /** Server-fetched theme content for SSR / first paint (crawlers). */
243
+ initialThemeContent?: any;
240
244
  }) => react_jsx_runtime.JSX.Element;
241
245
  declare const useHomeConfig: () => {
242
246
  selectedConfig: any[];
@@ -276,15 +280,6 @@ declare const useCustomPageConfig: () => {
276
280
  loading: boolean;
277
281
  };
278
282
 
279
- /**
280
- * Bridges the custom-page provider into the shared HeroSlider context.
281
- * CustomPageConfigProvider owns both block and hero state so saves cannot race.
282
- */
283
- declare const CustomPageHeroSliderProvider: (props: {
284
- pageId: number;
285
- children: React__default.ReactNode;
286
- }) => react_jsx_runtime.JSX.Element;
287
-
288
283
  declare const WishlistContext: React__default.Context<{
289
284
  wishlistItems: any[];
290
285
  addToWishlist: (sku: any) => void;
@@ -391,6 +386,8 @@ declare const HomeConfigHeroSliderContext: React__default.Context<{
391
386
  }>;
392
387
  declare const HomeConfigHeroSliderProvider: (props: {
393
388
  children: React__default.ReactNode;
389
+ /** Server-fetched theme content for SSR / first paint (crawlers). */
390
+ initialThemeContent?: any;
394
391
  }) => react_jsx_runtime.JSX.Element;
395
392
  declare const useHomeConfigHeroSlider: () => {
396
393
  loading: boolean;
@@ -408,6 +405,8 @@ declare const HeaderFooterContext: React__default.Context<{
408
405
  declare const HeaderFooterProvider: (props: {
409
406
  page: string;
410
407
  children: React__default.ReactNode;
408
+ /** Server-fetched theme content for SSR / first paint (crawlers). */
409
+ initialThemeContent?: any;
411
410
  }) => react_jsx_runtime.JSX.Element;
412
411
  declare const useHeaderFooter: () => {
413
412
  headerConfig: any;
@@ -529,4 +528,4 @@ type Props = {
529
528
  declare const LiveSupportWidgetProvider: React__default.FC<Props>;
530
529
  declare const useLiveSupportWidget: () => LiveSupportWidgetContextValue;
531
530
 
532
- export { AuthContext, AuthProvider, BaseProvider, BusinessConfigProvider, BusinessMediaContext, BusinessMediaProvider, CartContext, CartProvider, CartWishlistRefreshContext, CartWishlistRefreshProvider, CustomPageConfigContext, CustomPageConfigProvider, CustomPageHeroSliderProvider, CustomerConfigContext, CustomerConfigProvider, FilterContext, FilterProvider, HeaderFooterContext, HeaderFooterProvider, HomeConfigContext, HomeConfigHeroSliderContext, HomeConfigHeroSliderProvider, HomeConfigProvider, LiveSupportWidgetProvider, MenuCartContext, MenuCartProvider, MenuFilterContext, MenuFilterProvider, ModalProvider, ProductConfigContext, ProductConfigProvider, ProductDetailContext, ProductDetailProvider, ReferralCodeProvider, StorageContext, StorageProvider, ThemeEditContext, ThemeEditProvider, type ToastSupportApi, type ToastSupportOptions, ToastSupportProvider, WishlistContext, WishlistProvider, useAuth, useBusiness, useBusinessContext, useBusinessMedia, useCart, useCartWishlistRefresh, useCustomPageConfig, useCustomer, useFilter, useHeaderFooter, useHomeConfig, useHomeConfigHeroSlider, useLiveSupportWidget, useMenuCart, useMenuFilter, useModal, useProductConfig, useProductDetail, useReferralCode, useStorage, useThemeEdit, useToastSupport, useWishlist };
531
+ export { AuthContext, AuthProvider, BaseProvider, BusinessConfigProvider, BusinessMediaContext, BusinessMediaProvider, CartContext, CartProvider, CartWishlistRefreshContext, CartWishlistRefreshProvider, CustomPageConfigContext, CustomPageConfigProvider, CustomerConfigContext, CustomerConfigProvider, FilterContext, FilterProvider, HeaderFooterContext, HeaderFooterProvider, HomeConfigContext, HomeConfigHeroSliderContext, HomeConfigHeroSliderProvider, HomeConfigProvider, LiveSupportWidgetProvider, MenuCartContext, MenuCartProvider, MenuFilterContext, MenuFilterProvider, ModalProvider, ProductConfigContext, ProductConfigProvider, ProductDetailContext, ProductDetailProvider, ReferralCodeProvider, StorageContext, StorageProvider, ThemeEditContext, ThemeEditProvider, type ToastSupportApi, type ToastSupportOptions, ToastSupportProvider, WishlistContext, WishlistProvider, useAuth, useBusiness, useBusinessContext, useBusinessMedia, useCart, useCartWishlistRefresh, useCustomPageConfig, useCustomer, useFilter, useHeaderFooter, useHomeConfig, useHomeConfigHeroSlider, useLiveSupportWidget, useMenuCart, useMenuFilter, useModal, useProductConfig, useProductDetail, useReferralCode, useStorage, useThemeEdit, useToastSupport, useWishlist };
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export { AuthContext, AuthProvider, BaseProvider, BusinessConfigProvider, BusinessMediaContext, BusinessMediaProvider, CartContext, CartProvider, CartWishlistRefreshContext, CartWishlistRefreshProvider, CustomPageConfigContext, CustomPageConfigProvider, CustomPageHeroSliderProvider, CustomerConfigContext, CustomerConfigProvider, FilterContext, FilterProvider, HeaderFooterContext, HeaderFooterProvider, HomeConfigContext, HomeConfigHeroSliderContext, HomeConfigHeroSliderProvider, HomeConfigProvider, LiveSupportWidgetProvider, MenuCartContext, MenuCartProvider, MenuFilterContext, MenuFilterProvider, ModalProvider, ProductConfigContext, ProductConfigProvider, ProductDetailContext, ProductDetailProvider, ReferralCodeProvider, StorageContext, StorageProvider, ThemeEditContext, ThemeEditProvider, ToastSupportProvider, WishlistContext, WishlistProvider, useAuth, useBusiness, useBusinessContext, useBusinessMedia, useCart, useCartWishlistRefresh, useCustomPageConfig, useCustomer, useFilter, useHeaderFooter, useHomeConfig, useHomeConfigHeroSlider, useLiveSupportWidget, useMenuCart, useMenuFilter, useModal, useProductConfig, useProductDetail, useReferralCode, useStorage, useThemeEdit, useToastSupport, useWishlist } from './chunk-VK7BF3ES.js';
1
+ export { AuthContext, AuthProvider, BaseProvider, BusinessConfigProvider, BusinessMediaContext, BusinessMediaProvider, CartContext, CartProvider, CartWishlistRefreshContext, CartWishlistRefreshProvider, CustomPageConfigContext, CustomPageConfigProvider, CustomerConfigContext, CustomerConfigProvider, FilterContext, FilterProvider, HeaderFooterContext, HeaderFooterProvider, HomeConfigContext, HomeConfigHeroSliderContext, HomeConfigHeroSliderProvider, HomeConfigProvider, LiveSupportWidgetProvider, MenuCartContext, MenuCartProvider, MenuFilterContext, MenuFilterProvider, ModalProvider, ProductConfigContext, ProductConfigProvider, ProductDetailContext, ProductDetailProvider, ReferralCodeProvider, StorageContext, StorageProvider, ThemeEditContext, ThemeEditProvider, ToastSupportProvider, WishlistContext, WishlistProvider, useAuth, useBusiness, useBusinessContext, useBusinessMedia, useCart, useCartWishlistRefresh, useCustomPageConfig, useCustomer, useFilter, useHeaderFooter, useHomeConfig, useHomeConfigHeroSlider, useLiveSupportWidget, useMenuCart, useMenuFilter, useModal, useProductConfig, useProductDetail, useReferralCode, useStorage, useThemeEdit, useToastSupport, useWishlist } from './chunk-ID4JKOXT.js';
2
2
  export { BusinessConfigContext } from './chunk-SP77KIKJ.js';
3
3
  //# sourceMappingURL=index.js.map
4
4
  //# sourceMappingURL=index.js.map
package/dist/provider.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 [selectedVariants, setSelectedVariants] = react.useState([]);
781
- const [productDetail, setProductDetail] = react.useState([]);
782
- const [waitProductLoading, setWaitProductLoading] = react.useState(true);
783
- const selectedIds = props?.selected_variants?.split(",").map(Number);
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
- setWaitProductLoading(true);
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
- if (props.selected_variants !== null) {
808
- const initialV = productDetail2?.variant?.map((vType) => {
809
- const matchedVariant = vType.variants.find(
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,25 @@ var HomeConfigContext = react.createContext({
926
937
  loading: true
927
938
  });
928
939
  var HomeConfigProvider = (props) => {
929
- const [selectedConfig, setSelectedConfig] = react.useState([]);
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
- const [isInitialized, setIsInitialized] = react.useState(false);
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(true);
952
+ const [loading, setLoading] = react.useState(!hasInitial);
936
953
  const getThemeConfig = react.useCallback(async () => {
937
- setLoading(true);
954
+ if (!hasInitial) {
955
+ setLoading(true);
956
+ } else {
957
+ return;
958
+ }
938
959
  try {
939
960
  const response = await api$1.retrieveThemeContent(
940
961
  themeConfig.theme.id,
@@ -950,11 +971,11 @@ var HomeConfigProvider = (props) => {
950
971
  }
951
972
  setIsInitialized(true);
952
973
  } catch (error) {
953
- console.error("Error fetching theme content:", error);
974
+ console.log("Error fetching theme content:", error);
954
975
  } finally {
955
976
  setLoading(false);
956
977
  }
957
- }, [themeConfig.theme.id]);
978
+ }, [themeConfig.theme.id, hasInitial, props.page]);
958
979
  const onUpdateThemeContent = react.useCallback(
959
980
  async (configToUpdate = selectedConfig) => {
960
981
  try {
@@ -1048,6 +1069,73 @@ var HomeConfigProvider = (props) => {
1048
1069
  );
1049
1070
  };
1050
1071
  var useHomeConfig = () => react.useContext(HomeConfigContext);
1072
+ var HomeConfigHeroSliderContext = react.createContext({
1073
+ loading: true,
1074
+ heroSliderConfigData: [],
1075
+ onUpdateHeroSlider: () => null
1076
+ });
1077
+ var HomeConfigHeroSliderProvider = (props) => {
1078
+ const hasInitial = Array.isArray(props.initialThemeContent?.data);
1079
+ const [loading, setLoading] = react.useState(!hasInitial);
1080
+ const [heroSliderConfigData, setHeroSliderConfigData] = react.useState(
1081
+ () => hasInitial ? props.initialThemeContent.data : []
1082
+ );
1083
+ const { token } = useThemeEdit();
1084
+ const themeConfig = react.useContext(BusinessConfigContext);
1085
+ const getHeroSliderConfig = react.useCallback(async () => {
1086
+ if (hasInitial) {
1087
+ return;
1088
+ }
1089
+ setLoading(true);
1090
+ try {
1091
+ const response = await api$1.retrieveThemeContent(
1092
+ themeConfig.theme.id,
1093
+ "hero_slider"
1094
+ );
1095
+ setHeroSliderConfigData(response.data);
1096
+ } catch (error) {
1097
+ console.error("Error fetching hero slider content:", error);
1098
+ } finally {
1099
+ setLoading(false);
1100
+ }
1101
+ }, [themeConfig.theme.id, hasInitial]);
1102
+ react.useEffect(() => {
1103
+ getHeroSliderConfig();
1104
+ }, [getHeroSliderConfig]);
1105
+ const onUpdateHeroSlider = async (configToUpdate) => {
1106
+ setLoading(true);
1107
+ try {
1108
+ const body = {
1109
+ data: configToUpdate,
1110
+ slug: "hero_slider",
1111
+ platform: typeof window !== "undefined" ? "website" : "app"
1112
+ };
1113
+ await api$1.updateThemeContent(
1114
+ body,
1115
+ themeConfig?.theme?.id,
1116
+ "hero_slider",
1117
+ token
1118
+ );
1119
+ const updatedResponse = await api$1.retrieveThemeContent(
1120
+ themeConfig.theme.id,
1121
+ "hero_slider"
1122
+ );
1123
+ setHeroSliderConfigData(updatedResponse.data);
1124
+ } catch (error) {
1125
+ console.error("Error updating theme content:", error);
1126
+ } finally {
1127
+ setLoading(false);
1128
+ }
1129
+ };
1130
+ return /* @__PURE__ */ jsxRuntime.jsx(
1131
+ HomeConfigHeroSliderContext.Provider,
1132
+ {
1133
+ value: { loading, heroSliderConfigData, onUpdateHeroSlider },
1134
+ children: props.children
1135
+ }
1136
+ );
1137
+ };
1138
+ var useHomeConfigHeroSlider = () => react.useContext(HomeConfigHeroSliderContext);
1051
1139
  var CustomPageConfigContext = react.createContext({
1052
1140
  selectedConfig: [],
1053
1141
  setSelectedConfig: () => null,
@@ -1178,80 +1266,17 @@ var CustomPageConfigProvider = (props) => {
1178
1266
  onUpdateHeroSlider,
1179
1267
  loading
1180
1268
  },
1181
- children: props.children
1269
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1270
+ HomeConfigHeroSliderContext.Provider,
1271
+ {
1272
+ value: { loading, heroSliderConfigData, onUpdateHeroSlider },
1273
+ children: props.children
1274
+ }
1275
+ )
1182
1276
  }
1183
1277
  );
1184
1278
  };
1185
1279
  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
1280
  var WishlistContext = react.createContext({
1256
1281
  wishlistItems: [],
1257
1282
  addToWishlist: () => null,
@@ -1407,13 +1432,24 @@ var HeaderFooterContext = react.createContext({
1407
1432
  announcementConfig: {}
1408
1433
  });
1409
1434
  var HeaderFooterProvider = (props) => {
1410
- const [headerConfig, setHeaderConfig] = react.useState({});
1411
- const [footerConfig, setFooterConfig] = react.useState({});
1412
- const [announcementConfig, setAnnouncementConfig] = react.useState({});
1435
+ const hasInitial = props.initialThemeContent != null && "data" in props.initialThemeContent;
1436
+ const initialData = hasInitial ? props.initialThemeContent.data ?? {} : {};
1437
+ const [headerConfig, setHeaderConfig] = react.useState(
1438
+ () => props.page === "header" ? initialData : {}
1439
+ );
1440
+ const [footerConfig, setFooterConfig] = react.useState(
1441
+ () => props.page === "footer" ? initialData : {}
1442
+ );
1443
+ const [announcementConfig, setAnnouncementConfig] = react.useState(
1444
+ () => props.page === "announcement" ? initialData : {}
1445
+ );
1413
1446
  const { token } = useThemeEdit();
1414
1447
  const themeConfig = useBusiness();
1415
- const [loading, setLoading] = react.useState(true);
1448
+ const [loading, setLoading] = react.useState(!hasInitial);
1416
1449
  const getThemeConfig = react.useCallback(async () => {
1450
+ if (hasInitial) {
1451
+ return;
1452
+ }
1417
1453
  setLoading(true);
1418
1454
  try {
1419
1455
  const response = await api.api.retrieveThemeContent(
@@ -1428,7 +1464,7 @@ var HeaderFooterProvider = (props) => {
1428
1464
  } finally {
1429
1465
  setLoading(false);
1430
1466
  }
1431
- }, [themeConfig.theme.id]);
1467
+ }, [themeConfig.theme.id, hasInitial, props.page]);
1432
1468
  const onUpdateThemeContent = react.useCallback(
1433
1469
  async (configToUpdate) => {
1434
1470
  try {
@@ -1456,7 +1492,7 @@ var HeaderFooterProvider = (props) => {
1456
1492
  setLoading(false);
1457
1493
  }
1458
1494
  },
1459
- [props.page]
1495
+ [props.page, themeConfig.theme.id, token]
1460
1496
  );
1461
1497
  react.useEffect(() => {
1462
1498
  getThemeConfig();
@@ -1464,7 +1500,13 @@ var HeaderFooterProvider = (props) => {
1464
1500
  return /* @__PURE__ */ jsxRuntime.jsx(
1465
1501
  HeaderFooterContext.Provider,
1466
1502
  {
1467
- value: { headerConfig, footerConfig, onUpdateThemeContent, loading, announcementConfig },
1503
+ value: {
1504
+ headerConfig,
1505
+ footerConfig,
1506
+ onUpdateThemeContent,
1507
+ loading,
1508
+ announcementConfig
1509
+ },
1468
1510
  children: loading ? null : props.children
1469
1511
  }
1470
1512
  );
@@ -1921,7 +1963,6 @@ exports.CartWishlistRefreshContext = CartWishlistRefreshContext;
1921
1963
  exports.CartWishlistRefreshProvider = CartWishlistRefreshProvider;
1922
1964
  exports.CustomPageConfigContext = CustomPageConfigContext;
1923
1965
  exports.CustomPageConfigProvider = CustomPageConfigProvider;
1924
- exports.CustomPageHeroSliderProvider = CustomPageHeroSliderProvider;
1925
1966
  exports.CustomerConfigContext = CustomerConfigContext;
1926
1967
  exports.CustomerConfigProvider = CustomerConfigProvider;
1927
1968
  exports.FilterContext = FilterContext;