@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 +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +35 -10
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +36 -11
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.mjs
CHANGED
|
@@ -4,7 +4,7 @@ export { isBrowser, isIframe, useChildInstances, useItemInstance, useParentInsta
|
|
|
4
4
|
import { createSchema, isValidSchema } from '@weaverse/schema';
|
|
5
5
|
export * from '@weaverse/schema';
|
|
6
6
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
7
|
-
import { createContext, memo, useMemo, Suspense, useEffect, useContext } from 'react';
|
|
7
|
+
import { createContext, memo, useMemo, Suspense, useEffect, useContext, useRef } from 'react';
|
|
8
8
|
import { useMatches, Await, useRevalidator, useNavigation, useLocation, useNavigate, useRouteLoaderData } from 'react-router';
|
|
9
9
|
import { ErrorBoundary } from 'react-error-boundary';
|
|
10
10
|
|
|
@@ -83,7 +83,11 @@ function ThemeTextProvider({
|
|
|
83
83
|
}
|
|
84
84
|
function useThemeText() {
|
|
85
85
|
const ctx = useContext(ThemeTextContext);
|
|
86
|
-
if (!ctx)
|
|
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 = createContext(null);
|
|
423
|
+
ThemeSettingsStoreContext.displayName = "ThemeSettingsStoreContext";
|
|
424
|
+
function useCreateThemeSettingsStore() {
|
|
425
|
+
const data = useRouteLoaderData("root");
|
|
426
|
+
const storeRef = useRef(null);
|
|
427
|
+
if (!storeRef.current) {
|
|
428
|
+
storeRef.current = new ThemeSettingsStore(data?.weaverseTheme);
|
|
429
|
+
}
|
|
430
|
+
const theme = data?.weaverseTheme?.theme;
|
|
431
|
+
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 = useContext(ThemeSettingsStoreContext);
|
|
420
440
|
const data = useRouteLoaderData("root");
|
|
421
|
-
|
|
422
|
-
|
|
441
|
+
const fallbackRef = useRef(null);
|
|
442
|
+
if (!(fallbackRef.current || fromContext)) {
|
|
443
|
+
fallbackRef.current = new ThemeSettingsStore(data?.weaverseTheme);
|
|
423
444
|
}
|
|
424
|
-
|
|
445
|
+
const store = fromContext ?? fallbackRef.current;
|
|
446
|
+
const theme = data?.weaverseTheme?.theme;
|
|
447
|
+
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 = memo(
|
|
|
613
641
|
);
|
|
614
642
|
}
|
|
615
643
|
);
|
|
616
|
-
var ThemeSettingsProvider = createContext(null);
|
|
617
|
-
ThemeSettingsProvider.displayName = "WeaverseThemeSettingsProvider";
|
|
618
644
|
function withWeaverse(Component, options) {
|
|
619
645
|
return (props) => {
|
|
620
|
-
const themeSettingsStore =
|
|
621
|
-
const { settings } = themeSettingsStore;
|
|
646
|
+
const themeSettingsStore = useCreateThemeSettingsStore();
|
|
622
647
|
const themeTextData = useThemeTextData();
|
|
623
|
-
return /* @__PURE__ */ jsx(
|
|
648
|
+
return /* @__PURE__ */ jsx(ThemeSettingsStoreContext.Provider, { value: themeSettingsStore, children: /* @__PURE__ */ jsx(
|
|
624
649
|
ThemeTextProvider,
|
|
625
650
|
{
|
|
626
651
|
merchantOverrides: themeTextData.merchantOverrides,
|