@weaverse/hydrogen 2.8.4 → 2.8.6

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
@@ -57,6 +57,7 @@ declare class WeaverseClient {
57
57
  constructor(args: WeaverseClientArgs);
58
58
  fetchWithCache: <T>(url: string, options?: FetchWithCacheOptions) => Promise<T>;
59
59
  loadThemeSettings: (strategy?: AllCacheOptions) => Promise<any>;
60
+ generateFallbackPage: (message: string) => HydrogenPageData;
60
61
  loadPage: (params?: LoadPageParams) => Promise<WeaverseLoaderData | null>;
61
62
  execComponentLoader: (item: HydrogenComponentData) => Promise<HydrogenComponentData>;
62
63
  }
package/dist/index.d.ts CHANGED
@@ -57,6 +57,7 @@ declare class WeaverseClient {
57
57
  constructor(args: WeaverseClientArgs);
58
58
  fetchWithCache: <T>(url: string, options?: FetchWithCacheOptions) => Promise<T>;
59
59
  loadThemeSettings: (strategy?: AllCacheOptions) => Promise<any>;
60
+ generateFallbackPage: (message: string) => HydrogenPageData;
60
61
  loadPage: (params?: LoadPageParams) => Promise<WeaverseLoaderData | null>;
61
62
  execComponentLoader: (item: HydrogenComponentData) => Promise<HydrogenComponentData>;
62
63
  }
package/dist/index.js CHANGED
@@ -38,15 +38,15 @@ __export(src_exports, {
38
38
  getRequestQueries: () => getRequestQueries,
39
39
  getSelectedProductOptions: () => getSelectedProductOptions,
40
40
  getWeaverseConfigs: () => getWeaverseConfigs,
41
- useChildInstances: () => import_react16.useChildInstances,
42
- useItemInstance: () => import_react16.useItemInstance,
43
- useParentInstance: () => import_react16.useParentInstance,
41
+ useChildInstances: () => import_react14.useChildInstances,
42
+ useItemInstance: () => import_react14.useItemInstance,
43
+ useParentInstance: () => import_react14.useParentInstance,
44
44
  useThemeSettings: () => useThemeSettings,
45
- useWeaverse: () => import_react16.useWeaverse,
45
+ useWeaverse: () => import_react14.useWeaverse,
46
46
  withWeaverse: () => withWeaverse
47
47
  });
48
48
  module.exports = __toCommonJS(src_exports);
49
- var import_react16 = require("@weaverse/react");
49
+ var import_react14 = require("@weaverse/react");
50
50
 
51
51
  // src/components/main.tsx
52
52
  var main_exports = {};
@@ -56,7 +56,19 @@ __export(main_exports, {
56
56
  });
57
57
  var import_react = __toESM(require("react"));
58
58
  var Main = (0, import_react.forwardRef)((props, ref) => {
59
- return /* @__PURE__ */ import_react.default.createElement("div", { ref, ...props });
59
+ let { children, dangerouslySetInnerHTML, ...rest } = props;
60
+ return (
61
+ // eslint-disable-next-line react/no-danger-with-children
62
+ /* @__PURE__ */ import_react.default.createElement(
63
+ "div",
64
+ {
65
+ ref,
66
+ ...rest,
67
+ children,
68
+ dangerouslySetInnerHTML: children ? void 0 : dangerouslySetInnerHTML
69
+ }
70
+ )
71
+ );
60
72
  });
61
73
  var main_default = Main;
62
74
  var schema = {
@@ -69,9 +81,9 @@ var schema = {
69
81
  var defaultComponents = [main_exports];
70
82
 
71
83
  // src/WeaverseHydrogenRoot.tsx
72
- var import_react13 = require("@remix-run/react");
73
- var import_react14 = require("@weaverse/react");
74
- var import_react15 = __toESM(require("react"));
84
+ var import_react11 = require("@remix-run/react");
85
+ var import_react12 = require("@weaverse/react");
86
+ var import_react13 = __toESM(require("react"));
75
87
  var import_react_error_boundary = require("react-error-boundary");
76
88
 
77
89
  // src/context.ts
@@ -174,41 +186,19 @@ function useThemeSettings() {
174
186
  }
175
187
 
176
188
  // src/Effect.tsx
177
- var import_react12 = require("react");
178
-
179
- // src/hooks/use-pixel.ts
180
- var import_react7 = require("react");
181
- var import_react8 = require("@remix-run/react");
182
- var fetchingKey = "";
183
- function usePixel(context) {
184
- let { projectId, pageId, weaverseHost, isDesignMode } = context;
185
- let location = (0, import_react8.useLocation)();
186
- (0, import_react7.useEffect)(() => {
187
- if (isDesignMode || !projectId || !pageId || !weaverseHost)
188
- return;
189
- let currentKey = `${projectId}-${pageId}-${location.pathname}`;
190
- if (fetchingKey === currentKey)
191
- return;
192
- fetchingKey = currentKey;
193
- let url = `${weaverseHost}/api/public/px`;
194
- let xhr = new XMLHttpRequest();
195
- xhr.open("POST", url, true);
196
- xhr.setRequestHeader("Content-Type", "application/json");
197
- xhr.send(JSON.stringify({ projectId, pageId }));
198
- }, [location]);
199
- }
189
+ var import_react10 = require("react");
200
190
 
201
191
  // src/hooks/use-studio.ts
202
- var import_react9 = require("@remix-run/react");
203
- var import_react10 = require("@weaverse/react");
204
- var import_react11 = require("react");
192
+ var import_react7 = require("@remix-run/react");
193
+ var import_react8 = require("@weaverse/react");
194
+ var import_react9 = require("react");
205
195
  function useStudio(weaverse) {
206
- let { revalidate } = (0, import_react9.useRevalidator)();
207
- let { pathname, search } = (0, import_react9.useLocation)();
208
- let navigate = (0, import_react9.useNavigate)();
196
+ let { revalidate } = (0, import_react7.useRevalidator)();
197
+ let { pathname, search } = (0, import_react7.useLocation)();
198
+ let navigate = (0, import_react7.useNavigate)();
209
199
  let themeSettingsStore = useThemeContext();
210
200
  let { isDesignMode, weaverseHost, weaverseVersion } = weaverse;
211
- (0, import_react11.useEffect)(() => {
201
+ (0, import_react9.useEffect)(() => {
212
202
  if (isDesignMode) {
213
203
  weaverse.internal = {
214
204
  ...weaverse.internal,
@@ -217,7 +207,7 @@ function useStudio(weaverse) {
217
207
  themeSettingsStore
218
208
  };
219
209
  let studioSrc = `${weaverseHost}/static/studio/hydrogen/index.js?v=${weaverseVersion}`;
220
- (0, import_react10.loadScript)(studioSrc).then(() => {
210
+ (0, import_react8.loadScript)(studioSrc).then(() => {
221
211
  window.weaverseStudio?.init(weaverse);
222
212
  }).catch(console.error);
223
213
  }
@@ -225,31 +215,30 @@ function useStudio(weaverse) {
225
215
  }
226
216
 
227
217
  // src/Effect.tsx
228
- var WeaverseEffect = (0, import_react12.memo)(
218
+ var WeaverseEffect = (0, import_react10.memo)(
229
219
  ({ context }) => {
230
220
  useStudio(context);
231
- usePixel(context);
232
221
  return null;
233
222
  }
234
223
  );
235
224
 
236
225
  // src/WeaverseHydrogenRoot.tsx
237
- var WeaverseHydrogenRoot = (0, import_react15.memo)(
226
+ var WeaverseHydrogenRoot = (0, import_react13.memo)(
238
227
  ({
239
228
  errorComponent: ErrorComponent = FallbackError,
240
229
  components
241
230
  }) => {
242
- let loaderData = (0, import_react13.useLoaderData)();
231
+ let loaderData = (0, import_react11.useLoaderData)();
243
232
  let data = loaderData?.weaverseData;
244
233
  if (data) {
245
234
  if (data instanceof Promise) {
246
- return /* @__PURE__ */ import_react15.default.createElement(import_react_error_boundary.ErrorBoundary, { fallbackRender: ErrorComponent }, /* @__PURE__ */ import_react15.default.createElement(import_react15.Suspense, null, /* @__PURE__ */ import_react15.default.createElement(import_react13.Await, { resolve: data }, (resolvedData) => {
247
- return /* @__PURE__ */ import_react15.default.createElement(RenderRoot, { data: resolvedData, components });
235
+ return /* @__PURE__ */ import_react13.default.createElement(import_react_error_boundary.ErrorBoundary, { fallbackRender: ErrorComponent }, /* @__PURE__ */ import_react13.default.createElement(import_react13.Suspense, null, /* @__PURE__ */ import_react13.default.createElement(import_react11.Await, { resolve: data }, (resolvedData) => {
236
+ return /* @__PURE__ */ import_react13.default.createElement(RenderRoot, { data: resolvedData, components });
248
237
  })));
249
238
  }
250
- return /* @__PURE__ */ import_react15.default.createElement(RenderRoot, { data, components });
239
+ return /* @__PURE__ */ import_react13.default.createElement(RenderRoot, { data, components });
251
240
  }
252
- return /* @__PURE__ */ import_react15.default.createElement(
241
+ return /* @__PURE__ */ import_react13.default.createElement(
253
242
  ErrorComponent,
254
243
  {
255
244
  error: { message: "No Weaverse data return from route loader!" }
@@ -260,17 +249,17 @@ var WeaverseHydrogenRoot = (0, import_react15.memo)(
260
249
  function RenderRoot(props) {
261
250
  let { data, components } = props;
262
251
  let weaverse = createWeaverseInstance(data, components);
263
- return /* @__PURE__ */ import_react15.default.createElement(import_react15.default.Fragment, null, /* @__PURE__ */ import_react15.default.createElement(import_react14.WeaverseRoot, { context: weaverse }), /* @__PURE__ */ import_react15.default.createElement(WeaverseEffect, { context: weaverse }));
252
+ return /* @__PURE__ */ import_react13.default.createElement(import_react13.default.Fragment, null, /* @__PURE__ */ import_react13.default.createElement(import_react12.WeaverseRoot, { context: weaverse }), /* @__PURE__ */ import_react13.default.createElement(WeaverseEffect, { context: weaverse }));
264
253
  }
265
254
  function withWeaverse(Component) {
266
255
  return (props) => {
267
- let loaderData = (0, import_react13.useRouteLoaderData)("root");
256
+ let loaderData = (0, import_react11.useRouteLoaderData)("root");
268
257
  let themeSettingsStore = new ThemeSettingsStore(loaderData?.weaverseTheme);
269
- return /* @__PURE__ */ import_react15.default.createElement(ThemeProvider.Provider, { value: themeSettingsStore }, /* @__PURE__ */ import_react15.default.createElement(Component, { ...props }));
258
+ return /* @__PURE__ */ import_react13.default.createElement(ThemeProvider.Provider, { value: themeSettingsStore }, /* @__PURE__ */ import_react13.default.createElement(Component, { ...props }));
270
259
  };
271
260
  }
272
261
  function FallbackError({ error }) {
273
- return /* @__PURE__ */ import_react15.default.createElement("div", null, error?.message || "An unexpected error occurred");
262
+ return /* @__PURE__ */ import_react13.default.createElement("div", null, error?.message || "An unexpected error occurred");
274
263
  }
275
264
 
276
265
  // src/weaverse-client.ts
@@ -281,7 +270,7 @@ var package_default = {
281
270
  name: "@weaverse/hydrogen",
282
271
  author: "Weaverse Team",
283
272
  description: "Components, hooks, and utilities for building Shopify Hydrogen websites with Weaverse",
284
- version: "2.8.4",
273
+ version: "2.8.6",
285
274
  license: "MIT",
286
275
  main: "dist/index.js",
287
276
  typings: "dist/index.d.ts",
@@ -319,7 +308,7 @@ var package_default = {
319
308
  singleQuote: true
320
309
  },
321
310
  dependencies: {
322
- "@weaverse/react": "2.8.4",
311
+ "@weaverse/react": "2.8.6",
323
312
  "react-error-boundary": "^4.0.11"
324
313
  },
325
314
  devDependencies: {
@@ -370,7 +359,7 @@ function getWeaverseConfigs(request, env) {
370
359
 
371
360
  // src/weaverse-client.ts
372
361
  var WeaverseClient = class {
373
- API = "api/public/project";
362
+ API = "api/public";
374
363
  clientVersion = package_default.version;
375
364
  basePageConfigs;
376
365
  basePageRequestBody;
@@ -422,8 +411,8 @@ var WeaverseClient = class {
422
411
  let cacheKey = [url, options.body];
423
412
  let {
424
413
  strategy = this.storefront.CacheCustom({
425
- maxAge: 5,
426
- sMaxAge: 5,
414
+ maxAge: 10,
415
+ sMaxAge: 10,
427
416
  staleWhileRevalidate: 82800
428
417
  }),
429
418
  ...reqInit
@@ -453,19 +442,19 @@ var WeaverseClient = class {
453
442
  if (!projectId) {
454
443
  throw new Error("Missing Weaverse projectId!");
455
444
  }
445
+ let url = `${weaverseHost}/${API}/project_configs`;
456
446
  let res;
447
+ let body = JSON.stringify({
448
+ isDesignMode,
449
+ projectId
450
+ });
457
451
  if (isDesignMode) {
458
- res = await fetch(
459
- `${weaverseHost}/${API}/${projectId}/configs?isDesignMode=true`,
460
- {
461
- method: "POST"
462
- }
463
- ).then((res2) => res2.json());
452
+ res = await fetch(url, {
453
+ method: "POST",
454
+ body
455
+ }).then((res2) => res2.json());
464
456
  } else {
465
- res = await this.fetchWithCache(
466
- `${weaverseHost}/${API}/${projectId}/configs`,
467
- { method: "POST", strategy }
468
- );
457
+ res = await this.fetchWithCache(url, { method: "POST", strategy, body });
469
458
  }
470
459
  let data = res || {};
471
460
  if (data?.theme && this.themeSchema?.inspector) {
@@ -496,6 +485,21 @@ var WeaverseClient = class {
496
485
  return null;
497
486
  }
498
487
  };
488
+ generateFallbackPage = (message) => {
489
+ let rootId = crypto.randomUUID();
490
+ return {
491
+ id: "fallback_page_" + Date.now(),
492
+ rootId,
493
+ name: "Main",
494
+ items: [
495
+ {
496
+ type: "main",
497
+ id: rootId,
498
+ data: { dangerouslySetInnerHTML: { __html: message } }
499
+ }
500
+ ]
501
+ };
502
+ };
499
503
  loadPage = async (params = {}) => {
500
504
  return new Promise(async (resolve, reject) => {
501
505
  try {
@@ -514,7 +518,7 @@ var WeaverseClient = class {
514
518
  method: "POST",
515
519
  body: JSON.stringify(body)
516
520
  };
517
- let url = `${weaverseHost}/${this.API}`;
521
+ let url = `${weaverseHost}/${this.API}/project`;
518
522
  let payload;
519
523
  if (isDesignMode) {
520
524
  payload = await fetch(url, reqInit).then((res) => res.json());
@@ -532,7 +536,7 @@ var WeaverseClient = class {
532
536
  throw new Error(`Weaverse project not found. Id: ${projectId}`);
533
537
  }
534
538
  if (!page) {
535
- throw new Error(`No Weaverse page assigned to this url.`);
539
+ page = this.generateFallbackPage(`Please add new section to start.`);
536
540
  }
537
541
  if (page?.items) {
538
542
  let items = page.items;
@@ -592,7 +596,7 @@ function getSelectedProductOptions(request) {
592
596
  }
593
597
 
594
598
  // src/index.ts
595
- var WeaverseHydrogen = class extends import_react16.Weaverse {
599
+ var WeaverseHydrogen = class extends import_react14.Weaverse {
596
600
  platformType = "shopify-hydrogen";
597
601
  pageId;
598
602
  internal;
@@ -609,7 +613,7 @@ var WeaverseHydrogen = class extends import_react16.Weaverse {
609
613
  }
610
614
  registerComponents = (components) => {
611
615
  components.forEach((comp) => {
612
- import_react16.Weaverse.registerElement({
616
+ import_react14.Weaverse.registerElement({
613
617
  type: comp?.schema?.type,
614
618
  Component: comp?.default,
615
619
  schema: comp?.schema,
@@ -618,7 +622,7 @@ var WeaverseHydrogen = class extends import_react16.Weaverse {
618
622
  });
619
623
  };
620
624
  };
621
- var WeaverseHydrogenItem = class extends import_react16.WeaverseItemStore {
625
+ var WeaverseHydrogenItem = class extends import_react14.WeaverseItemStore {
622
626
  constructor(initialData, weaverse) {
623
627
  super(initialData, weaverse);
624
628
  let { data, ...rest } = initialData;
package/dist/index.mjs CHANGED
@@ -22,7 +22,19 @@ __export(main_exports, {
22
22
  });
23
23
  import React, { forwardRef } from "react";
24
24
  var Main = forwardRef((props, ref) => {
25
- return /* @__PURE__ */ React.createElement("div", { ref, ...props });
25
+ let { children, dangerouslySetInnerHTML, ...rest } = props;
26
+ return (
27
+ // eslint-disable-next-line react/no-danger-with-children
28
+ /* @__PURE__ */ React.createElement(
29
+ "div",
30
+ {
31
+ ref,
32
+ ...rest,
33
+ children,
34
+ dangerouslySetInnerHTML: children ? void 0 : dangerouslySetInnerHTML
35
+ }
36
+ )
37
+ );
26
38
  });
27
39
  var main_default = Main;
28
40
  var schema = {
@@ -142,39 +154,17 @@ function useThemeSettings() {
142
154
  // src/Effect.tsx
143
155
  import { memo } from "react";
144
156
 
145
- // src/hooks/use-pixel.ts
146
- import { useEffect } from "react";
147
- import { useLocation } from "@remix-run/react";
148
- var fetchingKey = "";
149
- function usePixel(context) {
150
- let { projectId, pageId, weaverseHost, isDesignMode } = context;
151
- let location = useLocation();
152
- useEffect(() => {
153
- if (isDesignMode || !projectId || !pageId || !weaverseHost)
154
- return;
155
- let currentKey = `${projectId}-${pageId}-${location.pathname}`;
156
- if (fetchingKey === currentKey)
157
- return;
158
- fetchingKey = currentKey;
159
- let url = `${weaverseHost}/api/public/px`;
160
- let xhr = new XMLHttpRequest();
161
- xhr.open("POST", url, true);
162
- xhr.setRequestHeader("Content-Type", "application/json");
163
- xhr.send(JSON.stringify({ projectId, pageId }));
164
- }, [location]);
165
- }
166
-
167
157
  // src/hooks/use-studio.ts
168
- import { useLocation as useLocation2, useNavigate, useRevalidator } from "@remix-run/react";
158
+ import { useLocation, useNavigate, useRevalidator } from "@remix-run/react";
169
159
  import { loadScript } from "@weaverse/react";
170
- import { useEffect as useEffect2 } from "react";
160
+ import { useEffect } from "react";
171
161
  function useStudio(weaverse) {
172
162
  let { revalidate } = useRevalidator();
173
- let { pathname, search } = useLocation2();
163
+ let { pathname, search } = useLocation();
174
164
  let navigate = useNavigate();
175
165
  let themeSettingsStore = useThemeContext();
176
166
  let { isDesignMode, weaverseHost, weaverseVersion } = weaverse;
177
- useEffect2(() => {
167
+ useEffect(() => {
178
168
  if (isDesignMode) {
179
169
  weaverse.internal = {
180
170
  ...weaverse.internal,
@@ -194,7 +184,6 @@ function useStudio(weaverse) {
194
184
  var WeaverseEffect = memo(
195
185
  ({ context }) => {
196
186
  useStudio(context);
197
- usePixel(context);
198
187
  return null;
199
188
  }
200
189
  );
@@ -247,7 +236,7 @@ var package_default = {
247
236
  name: "@weaverse/hydrogen",
248
237
  author: "Weaverse Team",
249
238
  description: "Components, hooks, and utilities for building Shopify Hydrogen websites with Weaverse",
250
- version: "2.8.4",
239
+ version: "2.8.6",
251
240
  license: "MIT",
252
241
  main: "dist/index.js",
253
242
  typings: "dist/index.d.ts",
@@ -285,7 +274,7 @@ var package_default = {
285
274
  singleQuote: true
286
275
  },
287
276
  dependencies: {
288
- "@weaverse/react": "2.8.4",
277
+ "@weaverse/react": "2.8.6",
289
278
  "react-error-boundary": "^4.0.11"
290
279
  },
291
280
  devDependencies: {
@@ -336,7 +325,7 @@ function getWeaverseConfigs(request, env) {
336
325
 
337
326
  // src/weaverse-client.ts
338
327
  var WeaverseClient = class {
339
- API = "api/public/project";
328
+ API = "api/public";
340
329
  clientVersion = package_default.version;
341
330
  basePageConfigs;
342
331
  basePageRequestBody;
@@ -388,8 +377,8 @@ var WeaverseClient = class {
388
377
  let cacheKey = [url, options.body];
389
378
  let {
390
379
  strategy = this.storefront.CacheCustom({
391
- maxAge: 5,
392
- sMaxAge: 5,
380
+ maxAge: 10,
381
+ sMaxAge: 10,
393
382
  staleWhileRevalidate: 82800
394
383
  }),
395
384
  ...reqInit
@@ -419,19 +408,19 @@ var WeaverseClient = class {
419
408
  if (!projectId) {
420
409
  throw new Error("Missing Weaverse projectId!");
421
410
  }
411
+ let url = `${weaverseHost}/${API}/project_configs`;
422
412
  let res;
413
+ let body = JSON.stringify({
414
+ isDesignMode,
415
+ projectId
416
+ });
423
417
  if (isDesignMode) {
424
- res = await fetch(
425
- `${weaverseHost}/${API}/${projectId}/configs?isDesignMode=true`,
426
- {
427
- method: "POST"
428
- }
429
- ).then((res2) => res2.json());
418
+ res = await fetch(url, {
419
+ method: "POST",
420
+ body
421
+ }).then((res2) => res2.json());
430
422
  } else {
431
- res = await this.fetchWithCache(
432
- `${weaverseHost}/${API}/${projectId}/configs`,
433
- { method: "POST", strategy }
434
- );
423
+ res = await this.fetchWithCache(url, { method: "POST", strategy, body });
435
424
  }
436
425
  let data = res || {};
437
426
  if (data?.theme && this.themeSchema?.inspector) {
@@ -462,6 +451,21 @@ var WeaverseClient = class {
462
451
  return null;
463
452
  }
464
453
  };
454
+ generateFallbackPage = (message) => {
455
+ let rootId = crypto.randomUUID();
456
+ return {
457
+ id: "fallback_page_" + Date.now(),
458
+ rootId,
459
+ name: "Main",
460
+ items: [
461
+ {
462
+ type: "main",
463
+ id: rootId,
464
+ data: { dangerouslySetInnerHTML: { __html: message } }
465
+ }
466
+ ]
467
+ };
468
+ };
465
469
  loadPage = async (params = {}) => {
466
470
  return new Promise(async (resolve, reject) => {
467
471
  try {
@@ -480,7 +484,7 @@ var WeaverseClient = class {
480
484
  method: "POST",
481
485
  body: JSON.stringify(body)
482
486
  };
483
- let url = `${weaverseHost}/${this.API}`;
487
+ let url = `${weaverseHost}/${this.API}/project`;
484
488
  let payload;
485
489
  if (isDesignMode) {
486
490
  payload = await fetch(url, reqInit).then((res) => res.json());
@@ -498,7 +502,7 @@ var WeaverseClient = class {
498
502
  throw new Error(`Weaverse project not found. Id: ${projectId}`);
499
503
  }
500
504
  if (!page) {
501
- throw new Error(`No Weaverse page assigned to this url.`);
505
+ page = this.generateFallbackPage(`Please add new section to start.`);
502
506
  }
503
507
  if (page?.items) {
504
508
  let items = page.items;
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.8.4",
5
+ "version": "2.8.6",
6
6
  "license": "MIT",
7
7
  "main": "dist/index.js",
8
8
  "typings": "dist/index.d.ts",
@@ -40,10 +40,10 @@
40
40
  "singleQuote": true
41
41
  },
42
42
  "dependencies": {
43
- "@weaverse/react": "2.8.4",
43
+ "@weaverse/react": "2.8.6",
44
44
  "react-error-boundary": "^4.0.11"
45
45
  },
46
46
  "devDependencies": {
47
47
  "@shopify/remix-oxygen": "^2.0.1"
48
48
  }
49
- }
49
+ }
package/readme.md CHANGED
@@ -34,7 +34,7 @@ Initialize the Weaverse Client to establish a connection between your Hydrogen p
34
34
  ```typescript
35
35
  // <root>/server.ts
36
36
 
37
- import {createWeaverseClient} from '~/weaverse/create-weaverse.server';
37
+ import { createWeaverseClient } from '~/weaverse/create-weaverse.server'
38
38
 
39
39
  const handleRequest = createRequestHandler({
40
40
  // ...
@@ -49,8 +49,7 @@ const handleRequest = createRequestHandler({
49
49
  }),
50
50
  // ... more app context properties
51
51
  }),
52
- });
53
-
52
+ })
54
53
  ```
55
54
 
56
55
  ### Data Fetching and Rendering
@@ -60,19 +59,18 @@ Use the Weaverse Client to fetch data such as page content and global theme sett
60
59
  ```typescript
61
60
  // <root>/app/routes/($locale)._index.tsx
62
61
 
63
- import { json } from '@shopify/remix-oxygen';
64
- import { type RouteLoaderArgs } from '@weaverse/hydrogen';
62
+ import { json } from '@shopify/remix-oxygen'
63
+ import { type RouteLoaderArgs } from '@weaverse/hydrogen'
65
64
 
66
- export async function loader({context}: RouteLoaderArgs) {
67
- let {weaverse} = context;
65
+ export async function loader({ context }: RouteLoaderArgs) {
66
+ let { weaverse } = context
68
67
 
69
68
  return json({
70
69
  // The key prop for a Weaverse page must always be `weaverseData`
71
70
  weaverseData: await weaverse.loadPage(),
72
71
  // Additional page data...
73
- });
72
+ })
74
73
  }
75
-
76
74
  ```
77
75
 
78
76
  Implement the `WeaverseHydrogenRoot` component to render the fetched content:
@@ -80,9 +78,9 @@ Implement the `WeaverseHydrogenRoot` component to render the fetched content:
80
78
  ```jsx
81
79
  // <root>/app/weaverse/index.tsx
82
80
 
83
- import {WeaverseHydrogenRoot} from '@weaverse/hydrogen';
84
- import {GenericError} from '~/components/GenericError';
85
- import {components} from './components';
81
+ import { WeaverseHydrogenRoot } from '@weaverse/hydrogen'
82
+ import { GenericError } from '~/components/GenericError'
83
+ import { components } from './components'
86
84
 
87
85
  export function WeaverseContent() {
88
86
  return (
@@ -90,18 +88,16 @@ export function WeaverseContent() {
90
88
  components={components}
91
89
  errorComponent={GenericError}
92
90
  />
93
- );
91
+ )
94
92
  }
95
93
 
96
-
97
94
  // <root>/app/routes/($locale)._index.tsx
98
95
 
99
- import { WeaverseContent } from '~/weaverse';
96
+ import { WeaverseContent } from '~/weaverse'
100
97
 
101
98
  export default function Homepage() {
102
- return <WeaverseContent />;
99
+ return <WeaverseContent />
103
100
  }
104
-
105
101
  ```
106
102
 
107
103
  ### Defining Component Schema
@@ -109,7 +105,7 @@ export default function Homepage() {
109
105
  Define your component's schema to control its behavior and interactivity within Weaverse Studio:
110
106
 
111
107
  ```typescript
112
- import type { HydrogenComponentSchema } from '@weaverse/hydrogen';
108
+ import type { HydrogenComponentSchema } from '@weaverse/hydrogen'
113
109
 
114
110
  export let schema: HydrogenComponentSchema = {
115
111
  title: 'Product Card',
@@ -117,17 +113,13 @@ export let schema: HydrogenComponentSchema = {
117
113
  inspector: [
118
114
  {
119
115
  group: 'Settings',
120
- inputs: [] // Defining input settings
121
- }
116
+ inputs: [], // Defining input settings
117
+ },
122
118
  ],
123
119
  childTypes: ['image', 'product-title', 'price'],
124
120
  presets: {
125
121
  type: 'product-card',
126
- children: [
127
- { type: 'image' },
128
- { type: 'product-title' },
129
- { type: 'price' },
130
- ],
122
+ children: [{ type: 'image' }, { type: 'product-title' }, { type: 'price' }],
131
123
  },
132
124
  limit: 3,
133
125
  enabledOn: {
@@ -135,8 +127,7 @@ export let schema: HydrogenComponentSchema = {
135
127
  groups: ['body'],
136
128
  },
137
129
  toolbar: ['general-settings', ['duplicate', 'delete']],
138
- };
139
-
130
+ }
140
131
  ```
141
132
 
142
133
  ### Customizing Input Settings
@@ -170,4 +161,3 @@ for more details on how to contribute effectively.
170
161
 
171
162
  This package is created by The Weaverse Team ([https://weaverse.io](https://weaverse.io)) and is licensed under the MIT
172
163
  License.
173
-