@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 +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +76 -72
- package/dist/index.mjs +49 -45
- package/package.json +3 -3
- package/readme.md +18 -28
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: () =>
|
|
42
|
-
useItemInstance: () =>
|
|
43
|
-
useParentInstance: () =>
|
|
41
|
+
useChildInstances: () => import_react14.useChildInstances,
|
|
42
|
+
useItemInstance: () => import_react14.useItemInstance,
|
|
43
|
+
useParentInstance: () => import_react14.useParentInstance,
|
|
44
44
|
useThemeSettings: () => useThemeSettings,
|
|
45
|
-
useWeaverse: () =>
|
|
45
|
+
useWeaverse: () => import_react14.useWeaverse,
|
|
46
46
|
withWeaverse: () => withWeaverse
|
|
47
47
|
});
|
|
48
48
|
module.exports = __toCommonJS(src_exports);
|
|
49
|
-
var
|
|
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
|
-
|
|
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
|
|
73
|
-
var
|
|
74
|
-
var
|
|
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
|
|
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
|
|
203
|
-
var
|
|
204
|
-
var
|
|
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,
|
|
207
|
-
let { pathname, search } = (0,
|
|
208
|
-
let navigate = (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
226
|
+
var WeaverseHydrogenRoot = (0, import_react13.memo)(
|
|
238
227
|
({
|
|
239
228
|
errorComponent: ErrorComponent = FallbackError,
|
|
240
229
|
components
|
|
241
230
|
}) => {
|
|
242
|
-
let loaderData = (0,
|
|
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__ */
|
|
247
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
239
|
+
return /* @__PURE__ */ import_react13.default.createElement(RenderRoot, { data, components });
|
|
251
240
|
}
|
|
252
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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,
|
|
256
|
+
let loaderData = (0, import_react11.useRouteLoaderData)("root");
|
|
268
257
|
let themeSettingsStore = new ThemeSettingsStore(loaderData?.weaverseTheme);
|
|
269
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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.
|
|
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.
|
|
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
|
|
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:
|
|
426
|
-
sMaxAge:
|
|
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
|
-
|
|
460
|
-
|
|
461
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
158
|
+
import { useLocation, useNavigate, useRevalidator } from "@remix-run/react";
|
|
169
159
|
import { loadScript } from "@weaverse/react";
|
|
170
|
-
import { useEffect
|
|
160
|
+
import { useEffect } from "react";
|
|
171
161
|
function useStudio(weaverse) {
|
|
172
162
|
let { revalidate } = useRevalidator();
|
|
173
|
-
let { pathname, search } =
|
|
163
|
+
let { pathname, search } = useLocation();
|
|
174
164
|
let navigate = useNavigate();
|
|
175
165
|
let themeSettingsStore = useThemeContext();
|
|
176
166
|
let { isDesignMode, weaverseHost, weaverseVersion } = weaverse;
|
|
177
|
-
|
|
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.
|
|
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.
|
|
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
|
|
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:
|
|
392
|
-
sMaxAge:
|
|
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
|
-
|
|
426
|
-
|
|
427
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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
|
-
|