@weaverse/hydrogen 2.7.4 → 2.8.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
@@ -140,7 +140,6 @@ type WeaverseLoaderRequestInfo = {
140
140
  };
141
141
  type WeaverseStorefrontData = {
142
142
  id?: string;
143
- __cachedId?: string;
144
143
  rootId: string;
145
144
  name: string;
146
145
  items: HydrogenComponentData[];
@@ -227,9 +226,9 @@ interface WeaverseLoaderData {
227
226
  }
228
227
  interface HydrogenPageData extends WeaverseProjectDataType {
229
228
  id: string;
230
- pageId: string;
231
229
  name: string;
232
230
  items: HydrogenComponentData[];
231
+ __cacheId?: string;
233
232
  [key: string]: any;
234
233
  }
235
234
  interface WeaverseHydrogenRootProps {
@@ -273,6 +272,7 @@ type FetchProjectPayload = {
273
272
  page: HydrogenPageData;
274
273
  project: HydrogenProjectType;
275
274
  pageAssignment: HydrogenPageAssignment;
275
+ error?: string;
276
276
  };
277
277
  type HydrogenThemeEnv = {
278
278
  WEAVERSE_PROJECT_ID: string;
@@ -310,7 +310,7 @@ type WeaverseArticle = WeaverseResourcePickerData;
310
310
  declare global {
311
311
  interface Window {
312
312
  __weaverse: WeaverseHydrogen;
313
- __weaverses: WeaverseHydrogen[];
313
+ __weaverses: Record<string, WeaverseHydrogen>;
314
314
  }
315
315
  }
316
316
 
package/dist/index.d.ts CHANGED
@@ -140,7 +140,6 @@ type WeaverseLoaderRequestInfo = {
140
140
  };
141
141
  type WeaverseStorefrontData = {
142
142
  id?: string;
143
- __cachedId?: string;
144
143
  rootId: string;
145
144
  name: string;
146
145
  items: HydrogenComponentData[];
@@ -227,9 +226,9 @@ interface WeaverseLoaderData {
227
226
  }
228
227
  interface HydrogenPageData extends WeaverseProjectDataType {
229
228
  id: string;
230
- pageId: string;
231
229
  name: string;
232
230
  items: HydrogenComponentData[];
231
+ __cacheId?: string;
233
232
  [key: string]: any;
234
233
  }
235
234
  interface WeaverseHydrogenRootProps {
@@ -273,6 +272,7 @@ type FetchProjectPayload = {
273
272
  page: HydrogenPageData;
274
273
  project: HydrogenProjectType;
275
274
  pageAssignment: HydrogenPageAssignment;
275
+ error?: string;
276
276
  };
277
277
  type HydrogenThemeEnv = {
278
278
  WEAVERSE_PROJECT_ID: string;
@@ -310,7 +310,7 @@ type WeaverseArticle = WeaverseResourcePickerData;
310
310
  declare global {
311
311
  interface Window {
312
312
  __weaverse: WeaverseHydrogen;
313
- __weaverses: WeaverseHydrogen[];
313
+ __weaverses: Record<string, WeaverseHydrogen>;
314
314
  }
315
315
  }
316
316
 
package/dist/index.js CHANGED
@@ -79,17 +79,13 @@ var import_react2 = require("@weaverse/react");
79
79
  var import_react3 = require("react");
80
80
  function createCachedWeaverseInstance(params, components) {
81
81
  if (import_react2.isBrowser) {
82
- window.__weaverses = window.__weaverses || [];
83
- let weaverse = window.__weaverses.find((w) => {
84
- let { pathname } = w.requestInfo;
85
- return pathname === params.requestInfo.pathname;
86
- });
82
+ window.__weaverses = window.__weaverses || {};
83
+ let weaverse = window.__weaverses[params.pageId];
87
84
  if (!weaverse) {
88
85
  weaverse = new WeaverseHydrogen(params, components);
89
- window.__weaverses.push(weaverse);
86
+ window.__weaverses[params.pageId] = weaverse;
90
87
  } else if (weaverse.isDesignMode) {
91
- weaverse.requestInfo = params.requestInfo;
92
- weaverse.setProjectData(params.data);
88
+ window.weaverseStudio?.refresh(params);
93
89
  }
94
90
  return weaverse;
95
91
  }
@@ -185,41 +181,38 @@ function useThemeContext() {
185
181
  // src/hooks/use-studio.ts
186
182
  function useStudio(weaverse) {
187
183
  let { revalidate } = (0, import_react7.useRevalidator)();
184
+ let { pathname, search } = (0, import_react7.useLocation)();
188
185
  let navigate = (0, import_react7.useNavigate)();
189
186
  let themeSettingsStore = useThemeContext();
190
187
  let { isDesignMode, weaverseHost, weaverseVersion } = weaverse;
191
- let isStudio = import_react8.isIframe && isDesignMode && weaverseHost && weaverseVersion;
192
188
  (0, import_react9.useEffect)(() => {
193
- if (isStudio) {
189
+ if (isDesignMode) {
194
190
  weaverse.internal = {
195
191
  ...weaverse.internal,
196
192
  navigate,
197
193
  revalidate,
198
194
  themeSettingsStore
199
195
  };
200
- window.__weaverse = weaverse;
201
- if (window.weaverseStudio) {
202
- window.weaverseStudio.init(weaverse);
203
- } else {
204
- let studioSrc = `${weaverseHost}/static/studio/hydrogen/index.js?v=${weaverseVersion}`;
205
- (0, import_react8.loadScript)(studioSrc);
206
- }
196
+ let studioSrc = `${weaverseHost}/static/studio/hydrogen/index.js?v=${weaverseVersion}`;
197
+ (0, import_react8.loadScript)(studioSrc).then(() => {
198
+ window.weaverseStudio?.init(weaverse);
199
+ }).catch(console.error);
207
200
  }
208
- }, [weaverse.requestInfo]);
201
+ }, [pathname, search]);
209
202
  }
210
203
 
211
204
  // src/pixel.tsx
212
205
  var import_react10 = __toESM(require("react"));
213
- var Pixel = ({ baseUrl, projectId, pageId }) => {
206
+ function Pixel({ baseUrl, projectId, pageId }) {
214
207
  const url = `${baseUrl}/api/public/px?projectId=${projectId}&pageId=${pageId}`;
215
208
  return /* @__PURE__ */ import_react10.default.createElement("img", { src: url, alt: "weaverse pixel", style: { display: "none" } });
216
- };
217
- var WeaversePixel = ({ context }) => {
209
+ }
210
+ function WeaversePixel({ context }) {
218
211
  let { projectId, pageId, weaverseHost, isDesignMode } = context;
219
212
  if (isDesignMode || !projectId || !pageId || !weaverseHost)
220
213
  return null;
221
214
  return /* @__PURE__ */ import_react10.default.createElement(Pixel, { baseUrl: weaverseHost, projectId, pageId });
222
- };
215
+ }
223
216
 
224
217
  // src/WeaverseHydrogenRoot.tsx
225
218
  var WeaverseHydrogenRoot = (0, import_react13.memo)(
@@ -270,7 +263,7 @@ var package_default = {
270
263
  name: "@weaverse/hydrogen",
271
264
  author: "Weaverse Team",
272
265
  description: "Components, hooks, and utilities for building Shopify Hydrogen websites with Weaverse",
273
- version: "2.7.4",
266
+ version: "2.8.0",
274
267
  license: "MIT",
275
268
  main: "dist/index.js",
276
269
  typings: "dist/index.d.ts",
@@ -308,7 +301,7 @@ var package_default = {
308
301
  singleQuote: true
309
302
  },
310
303
  dependencies: {
311
- "@weaverse/react": "2.7.4",
304
+ "@weaverse/react": "2.8.0",
312
305
  "react-error-boundary": "^4.0.11"
313
306
  },
314
307
  devDependencies: {
@@ -513,12 +506,15 @@ var WeaverseClient = class {
513
506
  strategy
514
507
  });
515
508
  }
509
+ if (payload?.error) {
510
+ throw new Error(payload?.error);
511
+ }
516
512
  let { page, project, pageAssignment } = payload;
517
- if (!page || !project || !pageAssignment) {
518
- throw new Error(
519
- // @ts-ignore
520
- payload?.error || "Invalid Weaverse project payload!"
521
- );
513
+ if (!project) {
514
+ throw new Error(`Weaverse project not found. Id: ${projectId}`);
515
+ }
516
+ if (!page) {
517
+ throw new Error(`No Weaverse page assigned to this url.`);
522
518
  }
523
519
  if (page?.items) {
524
520
  let items = page.items;
@@ -585,6 +581,7 @@ var WeaverseHydrogen = class extends import_react14.Weaverse {
585
581
  internal;
586
582
  requestInfo;
587
583
  constructor(params, components) {
584
+ console.log("\u{1F4BF} New WeaverseHydrogen", params);
588
585
  let { internal, pageId, requestInfo, ...coreParams } = params;
589
586
  super({ ...coreParams, ItemConstructor: WeaverseHydrogenItem });
590
587
  this.internal = internal;
package/dist/index.mjs CHANGED
@@ -45,17 +45,13 @@ import { isBrowser } from "@weaverse/react";
45
45
  import { createContext } from "react";
46
46
  function createCachedWeaverseInstance(params, components) {
47
47
  if (isBrowser) {
48
- window.__weaverses = window.__weaverses || [];
49
- let weaverse = window.__weaverses.find((w) => {
50
- let { pathname } = w.requestInfo;
51
- return pathname === params.requestInfo.pathname;
52
- });
48
+ window.__weaverses = window.__weaverses || {};
49
+ let weaverse = window.__weaverses[params.pageId];
53
50
  if (!weaverse) {
54
51
  weaverse = new WeaverseHydrogen(params, components);
55
- window.__weaverses.push(weaverse);
52
+ window.__weaverses[params.pageId] = weaverse;
56
53
  } else if (weaverse.isDesignMode) {
57
- weaverse.requestInfo = params.requestInfo;
58
- weaverse.setProjectData(params.data);
54
+ window.weaverseStudio?.refresh(params);
59
55
  }
60
56
  return weaverse;
61
57
  }
@@ -77,8 +73,8 @@ var ThemeProvider = createContext(null);
77
73
  ThemeProvider.displayName = "WeaverseThemeProvider";
78
74
 
79
75
  // src/hooks/use-studio.ts
80
- import { useNavigate, useRevalidator } from "@remix-run/react";
81
- import { isIframe, loadScript } from "@weaverse/react";
76
+ import { useLocation, useNavigate, useRevalidator } from "@remix-run/react";
77
+ import { loadScript } from "@weaverse/react";
82
78
  import { useEffect } from "react";
83
79
 
84
80
  // src/hooks/use-theme-context.ts
@@ -151,41 +147,38 @@ function useThemeContext() {
151
147
  // src/hooks/use-studio.ts
152
148
  function useStudio(weaverse) {
153
149
  let { revalidate } = useRevalidator();
150
+ let { pathname, search } = useLocation();
154
151
  let navigate = useNavigate();
155
152
  let themeSettingsStore = useThemeContext();
156
153
  let { isDesignMode, weaverseHost, weaverseVersion } = weaverse;
157
- let isStudio = isIframe && isDesignMode && weaverseHost && weaverseVersion;
158
154
  useEffect(() => {
159
- if (isStudio) {
155
+ if (isDesignMode) {
160
156
  weaverse.internal = {
161
157
  ...weaverse.internal,
162
158
  navigate,
163
159
  revalidate,
164
160
  themeSettingsStore
165
161
  };
166
- window.__weaverse = weaverse;
167
- if (window.weaverseStudio) {
168
- window.weaverseStudio.init(weaverse);
169
- } else {
170
- let studioSrc = `${weaverseHost}/static/studio/hydrogen/index.js?v=${weaverseVersion}`;
171
- loadScript(studioSrc);
172
- }
162
+ let studioSrc = `${weaverseHost}/static/studio/hydrogen/index.js?v=${weaverseVersion}`;
163
+ loadScript(studioSrc).then(() => {
164
+ window.weaverseStudio?.init(weaverse);
165
+ }).catch(console.error);
173
166
  }
174
- }, [weaverse.requestInfo]);
167
+ }, [pathname, search]);
175
168
  }
176
169
 
177
170
  // src/pixel.tsx
178
171
  import React2 from "react";
179
- var Pixel = ({ baseUrl, projectId, pageId }) => {
172
+ function Pixel({ baseUrl, projectId, pageId }) {
180
173
  const url = `${baseUrl}/api/public/px?projectId=${projectId}&pageId=${pageId}`;
181
174
  return /* @__PURE__ */ React2.createElement("img", { src: url, alt: "weaverse pixel", style: { display: "none" } });
182
- };
183
- var WeaversePixel = ({ context }) => {
175
+ }
176
+ function WeaversePixel({ context }) {
184
177
  let { projectId, pageId, weaverseHost, isDesignMode } = context;
185
178
  if (isDesignMode || !projectId || !pageId || !weaverseHost)
186
179
  return null;
187
180
  return /* @__PURE__ */ React2.createElement(Pixel, { baseUrl: weaverseHost, projectId, pageId });
188
- };
181
+ }
189
182
 
190
183
  // src/WeaverseHydrogenRoot.tsx
191
184
  var WeaverseHydrogenRoot = memo(
@@ -236,7 +229,7 @@ var package_default = {
236
229
  name: "@weaverse/hydrogen",
237
230
  author: "Weaverse Team",
238
231
  description: "Components, hooks, and utilities for building Shopify Hydrogen websites with Weaverse",
239
- version: "2.7.4",
232
+ version: "2.8.0",
240
233
  license: "MIT",
241
234
  main: "dist/index.js",
242
235
  typings: "dist/index.d.ts",
@@ -274,7 +267,7 @@ var package_default = {
274
267
  singleQuote: true
275
268
  },
276
269
  dependencies: {
277
- "@weaverse/react": "2.7.4",
270
+ "@weaverse/react": "2.8.0",
278
271
  "react-error-boundary": "^4.0.11"
279
272
  },
280
273
  devDependencies: {
@@ -479,12 +472,15 @@ var WeaverseClient = class {
479
472
  strategy
480
473
  });
481
474
  }
475
+ if (payload?.error) {
476
+ throw new Error(payload?.error);
477
+ }
482
478
  let { page, project, pageAssignment } = payload;
483
- if (!page || !project || !pageAssignment) {
484
- throw new Error(
485
- // @ts-ignore
486
- payload?.error || "Invalid Weaverse project payload!"
487
- );
479
+ if (!project) {
480
+ throw new Error(`Weaverse project not found. Id: ${projectId}`);
481
+ }
482
+ if (!page) {
483
+ throw new Error(`No Weaverse page assigned to this url.`);
488
484
  }
489
485
  if (page?.items) {
490
486
  let items = page.items;
@@ -551,6 +547,7 @@ var WeaverseHydrogen = class extends Weaverse {
551
547
  internal;
552
548
  requestInfo;
553
549
  constructor(params, components) {
550
+ console.log("\u{1F4BF} New WeaverseHydrogen", params);
554
551
  let { internal, pageId, requestInfo, ...coreParams } = params;
555
552
  super({ ...coreParams, ItemConstructor: WeaverseHydrogenItem });
556
553
  this.internal = internal;
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@weaverse/hydrogen",
3
3
  "author": "Weaverse Team",
4
4
  "description": "Components, hooks, and utilities for building Shopify Hydrogen websites with Weaverse",
5
- "version": "2.7.4",
5
+ "version": "2.8.0",
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",
8
8
  "typings": "dist/index.d.ts",
@@ -40,7 +40,7 @@
40
40
  "singleQuote": true
41
41
  },
42
42
  "dependencies": {
43
- "@weaverse/react": "2.7.4",
43
+ "@weaverse/react": "2.8.0",
44
44
  "react-error-boundary": "^4.0.11"
45
45
  },
46
46
  "devDependencies": {