@growupsell/react-ecommerce-core 2.0.14 → 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
@@ -386,6 +386,8 @@ declare const HomeConfigHeroSliderContext: React__default.Context<{
386
386
  }>;
387
387
  declare const HomeConfigHeroSliderProvider: (props: {
388
388
  children: React__default.ReactNode;
389
+ /** Server-fetched theme content for SSR / first paint (crawlers). */
390
+ initialThemeContent?: any;
389
391
  }) => react_jsx_runtime.JSX.Element;
390
392
  declare const useHomeConfigHeroSlider: () => {
391
393
  loading: boolean;
@@ -403,6 +405,8 @@ declare const HeaderFooterContext: React__default.Context<{
403
405
  declare const HeaderFooterProvider: (props: {
404
406
  page: string;
405
407
  children: React__default.ReactNode;
408
+ /** Server-fetched theme content for SSR / first paint (crawlers). */
409
+ initialThemeContent?: any;
406
410
  }) => react_jsx_runtime.JSX.Element;
407
411
  declare const useHeaderFooter: () => {
408
412
  headerConfig: any;
package/dist/index.d.ts CHANGED
@@ -386,6 +386,8 @@ declare const HomeConfigHeroSliderContext: React__default.Context<{
386
386
  }>;
387
387
  declare const HomeConfigHeroSliderProvider: (props: {
388
388
  children: React__default.ReactNode;
389
+ /** Server-fetched theme content for SSR / first paint (crawlers). */
390
+ initialThemeContent?: any;
389
391
  }) => react_jsx_runtime.JSX.Element;
390
392
  declare const useHomeConfigHeroSlider: () => {
391
393
  loading: boolean;
@@ -403,6 +405,8 @@ declare const HeaderFooterContext: React__default.Context<{
403
405
  declare const HeaderFooterProvider: (props: {
404
406
  page: string;
405
407
  children: React__default.ReactNode;
408
+ /** Server-fetched theme content for SSR / first paint (crawlers). */
409
+ initialThemeContent?: any;
406
410
  }) => react_jsx_runtime.JSX.Element;
407
411
  declare const useHeaderFooter: () => {
408
412
  headerConfig: any;
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
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-E66B7ABK.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
@@ -953,6 +953,8 @@ var HomeConfigProvider = (props) => {
953
953
  const getThemeConfig = react.useCallback(async () => {
954
954
  if (!hasInitial) {
955
955
  setLoading(true);
956
+ } else {
957
+ return;
956
958
  }
957
959
  try {
958
960
  const response = await api$1.retrieveThemeContent(
@@ -969,7 +971,7 @@ var HomeConfigProvider = (props) => {
969
971
  }
970
972
  setIsInitialized(true);
971
973
  } catch (error) {
972
- console.error("Error fetching theme content:", error);
974
+ console.log("Error fetching theme content:", error);
973
975
  } finally {
974
976
  setLoading(false);
975
977
  }
@@ -1073,11 +1075,17 @@ var HomeConfigHeroSliderContext = react.createContext({
1073
1075
  onUpdateHeroSlider: () => null
1074
1076
  });
1075
1077
  var HomeConfigHeroSliderProvider = (props) => {
1076
- const [loading, setLoading] = react.useState(true);
1077
- const [heroSliderConfigData, setHeroSliderConfigData] = react.useState([]);
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
+ );
1078
1083
  const { token } = useThemeEdit();
1079
1084
  const themeConfig = react.useContext(BusinessConfigContext);
1080
- const getHeroSliderConfig = async () => {
1085
+ const getHeroSliderConfig = react.useCallback(async () => {
1086
+ if (hasInitial) {
1087
+ return;
1088
+ }
1081
1089
  setLoading(true);
1082
1090
  try {
1083
1091
  const response = await api$1.retrieveThemeContent(
@@ -1085,13 +1093,15 @@ var HomeConfigHeroSliderProvider = (props) => {
1085
1093
  "hero_slider"
1086
1094
  );
1087
1095
  setHeroSliderConfigData(response.data);
1096
+ } catch (error) {
1097
+ console.error("Error fetching hero slider content:", error);
1088
1098
  } finally {
1089
1099
  setLoading(false);
1090
1100
  }
1091
- };
1101
+ }, [themeConfig.theme.id, hasInitial]);
1092
1102
  react.useEffect(() => {
1093
1103
  getHeroSliderConfig();
1094
- }, []);
1104
+ }, [getHeroSliderConfig]);
1095
1105
  const onUpdateHeroSlider = async (configToUpdate) => {
1096
1106
  setLoading(true);
1097
1107
  try {
@@ -1422,13 +1432,24 @@ var HeaderFooterContext = react.createContext({
1422
1432
  announcementConfig: {}
1423
1433
  });
1424
1434
  var HeaderFooterProvider = (props) => {
1425
- const [headerConfig, setHeaderConfig] = react.useState({});
1426
- const [footerConfig, setFooterConfig] = react.useState({});
1427
- 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
+ );
1428
1446
  const { token } = useThemeEdit();
1429
1447
  const themeConfig = useBusiness();
1430
- const [loading, setLoading] = react.useState(true);
1448
+ const [loading, setLoading] = react.useState(!hasInitial);
1431
1449
  const getThemeConfig = react.useCallback(async () => {
1450
+ if (hasInitial) {
1451
+ return;
1452
+ }
1432
1453
  setLoading(true);
1433
1454
  try {
1434
1455
  const response = await api.api.retrieveThemeContent(
@@ -1443,7 +1464,7 @@ var HeaderFooterProvider = (props) => {
1443
1464
  } finally {
1444
1465
  setLoading(false);
1445
1466
  }
1446
- }, [themeConfig.theme.id]);
1467
+ }, [themeConfig.theme.id, hasInitial, props.page]);
1447
1468
  const onUpdateThemeContent = react.useCallback(
1448
1469
  async (configToUpdate) => {
1449
1470
  try {
@@ -1471,7 +1492,7 @@ var HeaderFooterProvider = (props) => {
1471
1492
  setLoading(false);
1472
1493
  }
1473
1494
  },
1474
- [props.page]
1495
+ [props.page, themeConfig.theme.id, token]
1475
1496
  );
1476
1497
  react.useEffect(() => {
1477
1498
  getThemeConfig();
@@ -1479,7 +1500,13 @@ var HeaderFooterProvider = (props) => {
1479
1500
  return /* @__PURE__ */ jsxRuntime.jsx(
1480
1501
  HeaderFooterContext.Provider,
1481
1502
  {
1482
- value: { headerConfig, footerConfig, onUpdateThemeContent, loading, announcementConfig },
1503
+ value: {
1504
+ headerConfig,
1505
+ footerConfig,
1506
+ onUpdateThemeContent,
1507
+ loading,
1508
+ announcementConfig
1509
+ },
1483
1510
  children: loading ? null : props.children
1484
1511
  }
1485
1512
  );