@weaverse/hydrogen 5.10.0 → 5.11.0

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.mts CHANGED
@@ -549,7 +549,7 @@ type HydrogenThemeSchema = {
549
549
  urlStructure: 'url-path' | 'subdomain' | 'top-level-domain';
550
550
  defaultLocale: WeaverseI18n;
551
551
  shopLocales: WeaverseI18n[];
552
- staticContent: Record<string, unknown>;
552
+ staticContent?: Record<string, unknown>;
553
553
  };
554
554
  };
555
555
  type FetchProjectRequestBody = {
package/dist/index.d.ts CHANGED
@@ -549,7 +549,7 @@ type HydrogenThemeSchema = {
549
549
  urlStructure: 'url-path' | 'subdomain' | 'top-level-domain';
550
550
  defaultLocale: WeaverseI18n;
551
551
  shopLocales: WeaverseI18n[];
552
- staticContent: Record<string, unknown>;
552
+ staticContent?: Record<string, unknown>;
553
553
  };
554
554
  };
555
555
  type FetchProjectRequestBody = {
package/dist/index.js CHANGED
@@ -83,7 +83,11 @@ function ThemeTextProvider({
83
83
  }
84
84
  function useThemeText() {
85
85
  const ctx = react$1.useContext(ThemeTextContext);
86
- if (!ctx) throw new Error("useThemeText must be used within <ThemeTextProvider>. Wrap your app with withWeaverse().");
86
+ if (!ctx) {
87
+ throw new Error(
88
+ "useThemeText must be used within <ThemeTextProvider>. Wrap your app with withWeaverse()."
89
+ );
90
+ }
87
91
  return ctx;
88
92
  }
89
93
  function createFlatDataContext(matches) {
@@ -404,7 +408,6 @@ var ThemeSettingsStore = class {
404
408
  }
405
409
  }
406
410
  };
407
- // Method to properly clean up the store
408
411
  destroy = () => {
409
412
  if (this.isDestroyed) {
410
413
  return;
@@ -416,12 +419,37 @@ var ThemeSettingsStore = class {
416
419
  }
417
420
  };
418
421
  };
422
+ var ThemeSettingsStoreContext = react$1.createContext(null);
423
+ ThemeSettingsStoreContext.displayName = "ThemeSettingsStoreContext";
424
+ function useCreateThemeSettingsStore() {
425
+ const data = reactRouter.useRouteLoaderData("root");
426
+ const storeRef = react$1.useRef(null);
427
+ if (!storeRef.current) {
428
+ storeRef.current = new ThemeSettingsStore(data?.weaverseTheme);
429
+ }
430
+ const theme = data?.weaverseTheme?.theme;
431
+ react$1.useEffect(() => {
432
+ if (storeRef.current && theme) {
433
+ storeRef.current.updateThemeSettings(theme);
434
+ }
435
+ }, [theme]);
436
+ return storeRef.current;
437
+ }
419
438
  function useThemeSettingsStore() {
439
+ const fromContext = react$1.useContext(ThemeSettingsStoreContext);
420
440
  const data = reactRouter.useRouteLoaderData("root");
421
- if (react.isBrowser && window.__weaverseThemeSettingsStore) {
422
- return window.__weaverseThemeSettingsStore;
441
+ const fallbackRef = react$1.useRef(null);
442
+ if (!(fallbackRef.current || fromContext)) {
443
+ fallbackRef.current = new ThemeSettingsStore(data?.weaverseTheme);
423
444
  }
424
- return new ThemeSettingsStore(data?.weaverseTheme);
445
+ const store = fromContext ?? fallbackRef.current;
446
+ const theme = data?.weaverseTheme?.theme;
447
+ react$1.useEffect(() => {
448
+ if (!fromContext && theme) {
449
+ store.updateThemeSettings(theme);
450
+ }
451
+ }, [fromContext, store, theme]);
452
+ return store;
425
453
  }
426
454
 
427
455
  // src/utils/use-studio.ts
@@ -613,14 +641,11 @@ var WeaverseHydrogenRoot = react$1.memo(
613
641
  );
614
642
  }
615
643
  );
616
- var ThemeSettingsProvider = react$1.createContext(null);
617
- ThemeSettingsProvider.displayName = "WeaverseThemeSettingsProvider";
618
644
  function withWeaverse(Component, options) {
619
645
  return (props) => {
620
- const themeSettingsStore = useThemeSettingsStore();
621
- const { settings } = themeSettingsStore;
646
+ const themeSettingsStore = useCreateThemeSettingsStore();
622
647
  const themeTextData = useThemeTextData();
623
- return /* @__PURE__ */ jsxRuntime.jsx(ThemeSettingsProvider.Provider, { value: settings, children: /* @__PURE__ */ jsxRuntime.jsx(
648
+ return /* @__PURE__ */ jsxRuntime.jsx(ThemeSettingsStoreContext.Provider, { value: themeSettingsStore, children: /* @__PURE__ */ jsxRuntime.jsx(
624
649
  ThemeTextProvider,
625
650
  {
626
651
  merchantOverrides: themeTextData.merchantOverrides,