@weaverse/hydrogen 1.0.29 → 1.0.31

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.ts CHANGED
@@ -49,6 +49,5 @@ declare let WeaverseHydrogenRoot: React.MemoExoticComponent<({ components, data,
49
49
  weaverseData: any;
50
50
  };
51
51
  }) => JSX.Element>;
52
- declare function useIsHydrated(): boolean;
53
52
 
54
- export { WeaverseComponentLoaderArgs, WeaverseHydrogenRoot, fetchWithServerCache, hashKey, useIsHydrated, useStudio, weaverseLoader };
53
+ export { WeaverseComponentLoaderArgs, WeaverseHydrogenRoot, fetchWithServerCache, hashKey, useStudio, weaverseLoader };
package/dist/index.js CHANGED
@@ -33,7 +33,6 @@ __export(src_exports, {
33
33
  WeaverseHydrogenRoot: () => WeaverseHydrogenRoot,
34
34
  fetchWithServerCache: () => fetchWithServerCache,
35
35
  hashKey: () => hashKey,
36
- useIsHydrated: () => useIsHydrated,
37
36
  useStudio: () => useStudio,
38
37
  weaverseLoader: () => weaverseLoader
39
38
  });
@@ -69,16 +68,26 @@ var import_react4 = require("@weaverse/react");
69
68
 
70
69
  // src/context.ts
71
70
  var import_react2 = require("@weaverse/react");
71
+ var createCachedWeaverseContext = (init) => {
72
+ if (import_react2.isBrowser && init.pageId) {
73
+ window.__weaverses = window.__weaverses || {};
74
+ if (!window.__weaverses[init.pageId]) {
75
+ window.__weaverses[init.pageId] = (0, import_react2.createRootContext)(init);
76
+ }
77
+ return window.__weaverses[init.pageId];
78
+ }
79
+ return (0, import_react2.createRootContext)(init);
80
+ };
72
81
  var createWeaverseHydrogenContext = ({
73
82
  weaverseData: { pageData, config } = {
74
83
  pageData: {},
75
84
  config: {}
76
85
  }
77
86
  }, components) => {
78
- let weaverse = (0, import_react2.createRootContext)({
87
+ let weaverse = createCachedWeaverseContext({
79
88
  ...config,
80
89
  data: pageData,
81
- pageId: pageData?.pageId,
90
+ pageId: pageData?.id,
82
91
  isDesignMode: true,
83
92
  platformType: "shopify-hydrogen"
84
93
  });
@@ -216,32 +225,30 @@ var WeaverseHydrogenRoot = (0, import_react3.memo)(
216
225
  }) => {
217
226
  let weaverse = createWeaverseHydrogenContext(data, components);
218
227
  useStudio(weaverse);
228
+ useEnsureStitchesWorking(weaverse);
219
229
  if (!weaverse?.data) {
220
230
  return /* @__PURE__ */ import_react3.default.createElement("div", null, "404");
221
231
  }
222
- return /* @__PURE__ */ import_react3.default.createElement(import_react3.default.Fragment, null, /* @__PURE__ */ import_react3.default.createElement(import_react4.WeaverseRoot, { context: weaverse }), /* @__PURE__ */ import_react3.default.createElement(RenderStitchesStyles, { weaverse }));
232
+ return /* @__PURE__ */ import_react3.default.createElement(import_react4.WeaverseRoot, { context: weaverse });
223
233
  }
224
234
  );
225
- function useIsHydrated() {
226
- const [isHydrated, setHydrated] = (0, import_react3.useState)(false);
235
+ var useEnsureStitchesWorking = (weaverse) => {
227
236
  (0, import_react3.useEffect)(() => {
228
- setHydrated(true);
237
+ let stitchesInstance = weaverse.stitchesInstance;
238
+ if (stitchesInstance && !stitchesInstance.sheet?.sheet?.ownerNode) {
239
+ console.warn("stitches instance is not working, re-creating it");
240
+ delete weaverse.stitchesInstance;
241
+ weaverse.initStitches({ root: document });
242
+ weaverse.triggerUpdate();
243
+ weaverse.refreshAllItems();
244
+ }
229
245
  }, []);
230
- return isHydrated;
231
- }
232
- var RenderStitchesStyles = ({ weaverse }) => {
233
- let h = useIsHydrated();
234
- (0, import_react3.useEffect)(() => {
235
- h && !weaverse.isDesignMode && weaverse.triggerUpdate();
236
- }, [h]);
237
- return null;
238
246
  };
239
247
  // Annotate the CommonJS export names for ESM import in node:
240
248
  0 && (module.exports = {
241
249
  WeaverseHydrogenRoot,
242
250
  fetchWithServerCache,
243
251
  hashKey,
244
- useIsHydrated,
245
252
  useStudio,
246
253
  weaverseLoader
247
254
  });
package/dist/index.mjs CHANGED
@@ -23,21 +23,31 @@ var useStudio = (weaverseCore) => {
23
23
  };
24
24
 
25
25
  // src/index.tsx
26
- import React, { memo, useEffect as useEffect2, useState } from "react";
26
+ import React, { memo, useEffect as useEffect2 } from "react";
27
27
  import { WeaverseRoot } from "@weaverse/react";
28
28
 
29
29
  // src/context.ts
30
- import { createRootContext } from "@weaverse/react";
30
+ import { createRootContext, isBrowser } from "@weaverse/react";
31
+ var createCachedWeaverseContext = (init) => {
32
+ if (isBrowser && init.pageId) {
33
+ window.__weaverses = window.__weaverses || {};
34
+ if (!window.__weaverses[init.pageId]) {
35
+ window.__weaverses[init.pageId] = createRootContext(init);
36
+ }
37
+ return window.__weaverses[init.pageId];
38
+ }
39
+ return createRootContext(init);
40
+ };
31
41
  var createWeaverseHydrogenContext = ({
32
42
  weaverseData: { pageData, config } = {
33
43
  pageData: {},
34
44
  config: {}
35
45
  }
36
46
  }, components) => {
37
- let weaverse = createRootContext({
47
+ let weaverse = createCachedWeaverseContext({
38
48
  ...config,
39
49
  data: pageData,
40
- pageId: pageData?.pageId,
50
+ pageId: pageData?.id,
41
51
  isDesignMode: true,
42
52
  platformType: "shopify-hydrogen"
43
53
  });
@@ -178,31 +188,29 @@ var WeaverseHydrogenRoot = memo(
178
188
  }) => {
179
189
  let weaverse = createWeaverseHydrogenContext(data, components);
180
190
  useStudio(weaverse);
191
+ useEnsureStitchesWorking(weaverse);
181
192
  if (!weaverse?.data) {
182
193
  return /* @__PURE__ */ React.createElement("div", null, "404");
183
194
  }
184
- return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(WeaverseRoot, { context: weaverse }), /* @__PURE__ */ React.createElement(RenderStitchesStyles, { weaverse }));
195
+ return /* @__PURE__ */ React.createElement(WeaverseRoot, { context: weaverse });
185
196
  }
186
197
  );
187
- function useIsHydrated() {
188
- const [isHydrated, setHydrated] = useState(false);
198
+ var useEnsureStitchesWorking = (weaverse) => {
189
199
  useEffect2(() => {
190
- setHydrated(true);
200
+ let stitchesInstance = weaverse.stitchesInstance;
201
+ if (stitchesInstance && !stitchesInstance.sheet?.sheet?.ownerNode) {
202
+ console.warn("stitches instance is not working, re-creating it");
203
+ delete weaverse.stitchesInstance;
204
+ weaverse.initStitches({ root: document });
205
+ weaverse.triggerUpdate();
206
+ weaverse.refreshAllItems();
207
+ }
191
208
  }, []);
192
- return isHydrated;
193
- }
194
- var RenderStitchesStyles = ({ weaverse }) => {
195
- let h = useIsHydrated();
196
- useEffect2(() => {
197
- h && !weaverse.isDesignMode && weaverse.triggerUpdate();
198
- }, [h]);
199
- return null;
200
209
  };
201
210
  export {
202
211
  WeaverseHydrogenRoot,
203
212
  fetchWithServerCache,
204
213
  hashKey,
205
- useIsHydrated,
206
214
  useStudio,
207
215
  weaverseLoader
208
216
  };
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.0.29",
2
+ "version": "1.0.31",
3
3
  "license": "MIT",
4
4
  "main": "dist/index.js",
5
5
  "typings": "dist/index.d.ts",
@@ -33,8 +33,8 @@
33
33
  "author": "Weaverse Team",
34
34
  "dependencies": {
35
35
  "@shopify/hydrogen": "2023.4.0",
36
- "@weaverse/core": "1.0.29",
37
- "@weaverse/react": "1.0.29"
36
+ "@weaverse/core": "1.0.31",
37
+ "@weaverse/react": "1.0.31"
38
38
  },
39
39
  "devDependencies": {
40
40
  "@shopify/remix-oxygen": "^1.0.5"