@weaverse/hydrogen 5.10.1 → 5.11.1

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.js CHANGED
@@ -48,12 +48,12 @@ function getNestedKey(obj, path, fallback) {
48
48
  return fallback;
49
49
  }
50
50
  function interpolate(template, variables) {
51
- if (!variables || Object.keys(variables).length === 0) {
51
+ if (!variables) {
52
52
  return template;
53
53
  }
54
54
  return template.replace(/\{\{(\w+)\}\}/g, (match, key) => {
55
55
  const value = variables[key];
56
- return value !== void 0 ? String(value) : match;
56
+ return value === void 0 ? match : String(value);
57
57
  });
58
58
  }
59
59
  var ThemeTextContext = react$1.createContext(null);
@@ -408,7 +408,6 @@ var ThemeSettingsStore = class {
408
408
  }
409
409
  }
410
410
  };
411
- // Method to properly clean up the store
412
411
  destroy = () => {
413
412
  if (this.isDestroyed) {
414
413
  return;
@@ -420,12 +419,37 @@ var ThemeSettingsStore = class {
420
419
  }
421
420
  };
422
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
+ }
423
438
  function useThemeSettingsStore() {
439
+ const fromContext = react$1.useContext(ThemeSettingsStoreContext);
424
440
  const data = reactRouter.useRouteLoaderData("root");
425
- if (react.isBrowser && window.__weaverseThemeSettingsStore) {
426
- return window.__weaverseThemeSettingsStore;
441
+ const fallbackRef = react$1.useRef(null);
442
+ if (!(fallbackRef.current || fromContext)) {
443
+ fallbackRef.current = new ThemeSettingsStore(data?.weaverseTheme);
427
444
  }
428
- 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;
429
453
  }
430
454
 
431
455
  // src/utils/use-studio.ts
@@ -617,14 +641,11 @@ var WeaverseHydrogenRoot = react$1.memo(
617
641
  );
618
642
  }
619
643
  );
620
- var ThemeSettingsProvider = react$1.createContext(null);
621
- ThemeSettingsProvider.displayName = "WeaverseThemeSettingsProvider";
622
644
  function withWeaverse(Component, options) {
623
645
  return (props) => {
624
- const themeSettingsStore = useThemeSettingsStore();
625
- const { settings } = themeSettingsStore;
646
+ const themeSettingsStore = useCreateThemeSettingsStore();
626
647
  const themeTextData = useThemeTextData();
627
- 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(
628
649
  ThemeTextProvider,
629
650
  {
630
651
  merchantOverrides: themeTextData.merchantOverrides,
@@ -1076,7 +1097,7 @@ var WeaverseClient = class {
1076
1097
  type: typeof result,
1077
1098
  isString: typeof result === "string",
1078
1099
  length: typeof result === "string" ? result.length : "N/A",
1079
- preview: typeof result === "string" ? `${result.substring(0, 50)}...` : String(result)
1100
+ preview: typeof result === "string" ? `${result.slice(0, 50)}...` : String(result)
1080
1101
  }
1081
1102
  );
1082
1103
  result = { theme: defaultThemeSettings };