@weaverse/hydrogen 1.3.3 → 1.5.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 +59 -71
- package/dist/index.d.ts +59 -71
- package/dist/index.js +233 -230
- package/dist/index.mjs +231 -223
- package/package.json +2 -2
package/dist/index.mjs
CHANGED
|
@@ -1,12 +1,183 @@
|
|
|
1
1
|
// src/index.ts
|
|
2
|
-
|
|
2
|
+
import {
|
|
3
|
+
Weaverse,
|
|
4
|
+
WeaverseItemStore
|
|
5
|
+
} from "@weaverse/react";
|
|
3
6
|
|
|
4
|
-
// src/
|
|
5
|
-
import "@
|
|
7
|
+
// src/WeaverseHydrogenRoot.tsx
|
|
8
|
+
import { Await, useLoaderData } from "@remix-run/react";
|
|
9
|
+
import { WeaverseRoot } from "@weaverse/react";
|
|
10
|
+
import React, { Suspense } from "react";
|
|
11
|
+
import { ErrorBoundary } from "react-error-boundary";
|
|
12
|
+
|
|
13
|
+
// src/context.ts
|
|
14
|
+
import { isBrowser } from "@weaverse/react";
|
|
15
|
+
import { createContext } from "react";
|
|
16
|
+
function createCachedWeaverseInstance(params, components) {
|
|
17
|
+
if (isBrowser) {
|
|
18
|
+
window.__weaverses = window.__weaverses || [];
|
|
19
|
+
let weaverse = window.__weaverses.find((w) => {
|
|
20
|
+
let { pathname, search } = w.requestInfo;
|
|
21
|
+
let { __cachedId } = w.data;
|
|
22
|
+
return pathname === params.requestInfo.pathname && search === params.requestInfo.search && __cachedId === params.data.__cachedId;
|
|
23
|
+
});
|
|
24
|
+
if (!weaverse) {
|
|
25
|
+
weaverse = new WeaverseHydrogen(params, components);
|
|
26
|
+
window.__weaverses.push(weaverse);
|
|
27
|
+
console.log("\u{1F4BF} Weaverse", weaverse);
|
|
28
|
+
}
|
|
29
|
+
return weaverse;
|
|
30
|
+
}
|
|
31
|
+
return new WeaverseHydrogen(params, components);
|
|
32
|
+
}
|
|
33
|
+
function createWeaverseInstance(weaverseData, components) {
|
|
34
|
+
let { page, configs, project, pageAssignment } = weaverseData || {};
|
|
35
|
+
let weaverse = createCachedWeaverseInstance(
|
|
36
|
+
{
|
|
37
|
+
...configs,
|
|
38
|
+
data: page || {},
|
|
39
|
+
pageId: page?.id,
|
|
40
|
+
internal: { project, pageAssignment }
|
|
41
|
+
},
|
|
42
|
+
components
|
|
43
|
+
);
|
|
44
|
+
return weaverse;
|
|
45
|
+
}
|
|
46
|
+
var ThemeProvider = createContext(null);
|
|
47
|
+
ThemeProvider.displayName = "WeaverseThemeProvider";
|
|
48
|
+
|
|
49
|
+
// src/hooks/use-studio.ts
|
|
50
|
+
import { useNavigate, useRevalidator } from "@remix-run/react";
|
|
51
|
+
import { isIframe, loadScript } from "@weaverse/react";
|
|
52
|
+
import { useEffect } from "react";
|
|
53
|
+
|
|
54
|
+
// src/hooks/use-theme-context.ts
|
|
55
|
+
import { useContext } from "react";
|
|
56
|
+
function useThemeContext() {
|
|
57
|
+
let themeContext = useContext(ThemeProvider);
|
|
58
|
+
if (!themeContext) {
|
|
59
|
+
throw new Error(
|
|
60
|
+
`useThemeContext must be used within a ThemeProvider. Make sure to wrap your app in the withWeaverse HoC.`
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
return themeContext;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// src/hooks/use-studio.ts
|
|
67
|
+
function useStudio(weaverse) {
|
|
68
|
+
let { revalidate } = useRevalidator();
|
|
69
|
+
let navigate = useNavigate();
|
|
70
|
+
let themeSettingsStore = useThemeContext();
|
|
71
|
+
let { isDesignMode, weaverseHost, weaverseVersion } = weaverse;
|
|
72
|
+
let isStudio = isIframe && isDesignMode && weaverseHost && weaverseVersion;
|
|
73
|
+
useEffect(() => {
|
|
74
|
+
if (isStudio) {
|
|
75
|
+
weaverse.internal = {
|
|
76
|
+
...weaverse.internal,
|
|
77
|
+
navigate,
|
|
78
|
+
revalidate,
|
|
79
|
+
themeSettingsStore
|
|
80
|
+
};
|
|
81
|
+
window.__weaverse = weaverse;
|
|
82
|
+
if (window.weaverseStudio) {
|
|
83
|
+
window.weaverseStudio.init(weaverse);
|
|
84
|
+
} else {
|
|
85
|
+
let studioSrc = `${weaverseHost}/assets/studio/hydrogen/index.js?v=${weaverseVersion}`;
|
|
86
|
+
loadScript(studioSrc);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}, [weaverse]);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// src/hooks/use-theme-settings.ts
|
|
93
|
+
import { useSyncExternalStore } from "react";
|
|
94
|
+
var ThemeSettingsStore = class {
|
|
95
|
+
settings = null;
|
|
96
|
+
listeners = [];
|
|
97
|
+
countries;
|
|
98
|
+
schema;
|
|
99
|
+
publicEnv;
|
|
100
|
+
constructor(data) {
|
|
101
|
+
let { theme, countries, schema, publicEnv } = data || {};
|
|
102
|
+
this.settings = theme || null;
|
|
103
|
+
this.countries = countries;
|
|
104
|
+
this.schema = schema;
|
|
105
|
+
this.publicEnv = publicEnv;
|
|
106
|
+
}
|
|
107
|
+
updateThemeSettings = (newSettings) => {
|
|
108
|
+
this.settings = { ...this.settings, ...newSettings };
|
|
109
|
+
this.emitChange();
|
|
110
|
+
};
|
|
111
|
+
subscribe = (listener) => {
|
|
112
|
+
this.listeners = [...this.listeners, listener];
|
|
113
|
+
return () => {
|
|
114
|
+
this.listeners = this.listeners.filter((l) => l !== listener);
|
|
115
|
+
};
|
|
116
|
+
};
|
|
117
|
+
getSnapshot = () => {
|
|
118
|
+
return this.settings;
|
|
119
|
+
};
|
|
120
|
+
getServerSnapshot = () => {
|
|
121
|
+
return this.settings;
|
|
122
|
+
};
|
|
123
|
+
emitChange = () => {
|
|
124
|
+
for (let listener of this.listeners) {
|
|
125
|
+
listener();
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
};
|
|
129
|
+
function useThemeSettings() {
|
|
130
|
+
let themeSettingsStore = useThemeContext();
|
|
131
|
+
let settings = useSyncExternalStore(
|
|
132
|
+
themeSettingsStore.subscribe,
|
|
133
|
+
themeSettingsStore.getSnapshot,
|
|
134
|
+
themeSettingsStore.getServerSnapshot
|
|
135
|
+
);
|
|
136
|
+
return settings;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// src/WeaverseHydrogenRoot.tsx
|
|
140
|
+
function WeaverseHydrogenRoot({
|
|
141
|
+
errorComponent: ErrorComponent = FallbackError,
|
|
142
|
+
components
|
|
143
|
+
}) {
|
|
144
|
+
let loaderData = useLoaderData();
|
|
145
|
+
let data = loaderData?.weaverseData;
|
|
146
|
+
if (data) {
|
|
147
|
+
if (data instanceof Promise) {
|
|
148
|
+
return /* @__PURE__ */ React.createElement(ErrorBoundary, { fallbackRender: ErrorComponent }, /* @__PURE__ */ React.createElement(Suspense, null, /* @__PURE__ */ React.createElement(Await, { resolve: data }, (resolvedData) => {
|
|
149
|
+
return /* @__PURE__ */ React.createElement(RenderRoot, { data: resolvedData, components });
|
|
150
|
+
})));
|
|
151
|
+
}
|
|
152
|
+
return /* @__PURE__ */ React.createElement(RenderRoot, { data, components });
|
|
153
|
+
}
|
|
154
|
+
return /* @__PURE__ */ React.createElement(
|
|
155
|
+
ErrorComponent,
|
|
156
|
+
{
|
|
157
|
+
error: { message: "No Weaverse data return from route loader!" }
|
|
158
|
+
}
|
|
159
|
+
);
|
|
160
|
+
}
|
|
161
|
+
function RenderRoot(props) {
|
|
162
|
+
let { data, components } = props;
|
|
163
|
+
let weaverse = createWeaverseInstance(data, components);
|
|
164
|
+
useStudio(weaverse);
|
|
165
|
+
return /* @__PURE__ */ React.createElement(WeaverseRoot, { context: weaverse });
|
|
166
|
+
}
|
|
167
|
+
function withWeaverse(Component) {
|
|
168
|
+
return (props) => {
|
|
169
|
+
let { weaverseTheme } = useLoaderData();
|
|
170
|
+
let themeSettingsStore = new ThemeSettingsStore(weaverseTheme);
|
|
171
|
+
return /* @__PURE__ */ React.createElement(ThemeProvider.Provider, { value: themeSettingsStore }, /* @__PURE__ */ React.createElement(Component, { ...props }));
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
function FallbackError({ error }) {
|
|
175
|
+
return /* @__PURE__ */ React.createElement("div", null, error?.message || "An unexpected error occurred");
|
|
176
|
+
}
|
|
6
177
|
|
|
7
178
|
// package.json
|
|
8
179
|
var package_default = {
|
|
9
|
-
version: "1.
|
|
180
|
+
version: "1.5.0",
|
|
10
181
|
license: "MIT",
|
|
11
182
|
main: "dist/index.js",
|
|
12
183
|
typings: "dist/index.d.ts",
|
|
@@ -41,7 +212,7 @@ var package_default = {
|
|
|
41
212
|
dependencies: {
|
|
42
213
|
"@remix-run/react": "1.19.1",
|
|
43
214
|
"@shopify/hydrogen": "2023.7.8",
|
|
44
|
-
"@weaverse/react": "1.
|
|
215
|
+
"@weaverse/react": "1.5.0",
|
|
45
216
|
"react-error-boundary": "^4.0.11"
|
|
46
217
|
},
|
|
47
218
|
devDependencies: {
|
|
@@ -80,43 +251,21 @@ function getWeaverseConfigs(request, env) {
|
|
|
80
251
|
}
|
|
81
252
|
};
|
|
82
253
|
}
|
|
83
|
-
function getWeaverseCsp(request) {
|
|
84
|
-
let url = new URL(request.url);
|
|
85
|
-
let weaverseHost = url.searchParams.get("weaverseHost");
|
|
86
|
-
let weaverseHosts = ["https://*.weaverse.io"];
|
|
87
|
-
if (weaverseHost) {
|
|
88
|
-
weaverseHosts.push(weaverseHost);
|
|
89
|
-
}
|
|
90
|
-
return {
|
|
91
|
-
frameAncestors: weaverseHosts,
|
|
92
|
-
defaultSrc: [
|
|
93
|
-
"'self'",
|
|
94
|
-
"https://cdn.shopify.com",
|
|
95
|
-
"https://shopify.com",
|
|
96
|
-
"https://*.youtube.com",
|
|
97
|
-
...weaverseHosts
|
|
98
|
-
],
|
|
99
|
-
styleSrc: [
|
|
100
|
-
"'self'",
|
|
101
|
-
"'unsafe-inline'",
|
|
102
|
-
"https://cdn.shopify.com",
|
|
103
|
-
...weaverseHosts
|
|
104
|
-
]
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
254
|
|
|
108
|
-
// src/client.ts
|
|
255
|
+
// src/weaverse-client.ts
|
|
109
256
|
var WeaverseClient = class {
|
|
110
257
|
API = "api/public/project";
|
|
111
258
|
clientVersion = package_default.version;
|
|
259
|
+
basePageConfigs;
|
|
260
|
+
basePageRequestBody;
|
|
112
261
|
storefront;
|
|
262
|
+
// storefront: Storefront<I18nLocale>
|
|
113
263
|
components;
|
|
114
264
|
countries;
|
|
115
265
|
themeSchema;
|
|
116
266
|
configs;
|
|
117
|
-
basePageConfigs;
|
|
118
|
-
basePageRequestBody;
|
|
119
267
|
withCache;
|
|
268
|
+
// withCache: ReturnType<typeof createWithCache>
|
|
120
269
|
constructor(args) {
|
|
121
270
|
let { configs, storefront, components, countries, withCache, themeSchema } = args;
|
|
122
271
|
this.storefront = storefront;
|
|
@@ -183,7 +332,7 @@ var WeaverseClient = class {
|
|
|
183
332
|
return new Promise(async (resolve, reject) => {
|
|
184
333
|
try {
|
|
185
334
|
if (!this.configs.projectId) {
|
|
186
|
-
|
|
335
|
+
throw new Error("Missing Weaverse projectId!");
|
|
187
336
|
}
|
|
188
337
|
let { request, params } = args;
|
|
189
338
|
let { strategy, ...pageLoadParams } = configs;
|
|
@@ -208,11 +357,9 @@ var WeaverseClient = class {
|
|
|
208
357
|
}
|
|
209
358
|
let { page, project, pageAssignment } = payload;
|
|
210
359
|
if (!page || !project || !pageAssignment) {
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
payload?.error || "Invalid Weaverse project payload!"
|
|
215
|
-
)
|
|
360
|
+
throw new Error(
|
|
361
|
+
// @ts-ignore
|
|
362
|
+
payload?.error || "Invalid Weaverse project payload!"
|
|
216
363
|
);
|
|
217
364
|
}
|
|
218
365
|
if (page?.items) {
|
|
@@ -266,210 +413,71 @@ var WeaverseClient = class {
|
|
|
266
413
|
};
|
|
267
414
|
};
|
|
268
415
|
|
|
269
|
-
// src/hooks/use-theme-settings.ts
|
|
270
|
-
import { useSyncExternalStore } from "react";
|
|
271
|
-
|
|
272
|
-
// src/hooks/use-theme-context.ts
|
|
273
|
-
import { useContext } from "react";
|
|
274
|
-
|
|
275
|
-
// src/context.ts
|
|
276
|
-
import { Weaverse, isBrowser } from "@weaverse/react";
|
|
277
|
-
import { createContext } from "react";
|
|
278
|
-
function createCachedWeaverseInstance(init) {
|
|
279
|
-
if (isBrowser) {
|
|
280
|
-
window.__weaverses = window.__weaverses || [];
|
|
281
|
-
let weaverse = window.__weaverses.find((w) => {
|
|
282
|
-
let { pathname, search } = w.requestInfo;
|
|
283
|
-
let { __cachedId } = w.data;
|
|
284
|
-
return pathname === init.requestInfo.pathname && search === init.requestInfo.search && __cachedId === init.data.__cachedId;
|
|
285
|
-
});
|
|
286
|
-
if (!weaverse) {
|
|
287
|
-
weaverse = new Weaverse(init);
|
|
288
|
-
window.__weaverses.push(weaverse);
|
|
289
|
-
console.log("\u{1F4BF} Weaverse", weaverse);
|
|
290
|
-
}
|
|
291
|
-
return weaverse;
|
|
292
|
-
}
|
|
293
|
-
return new Weaverse(init);
|
|
294
|
-
}
|
|
295
|
-
function createWeaverseInstance(weaverseData, components) {
|
|
296
|
-
let { page, configs, project, pageAssignment } = weaverseData || {};
|
|
297
|
-
let weaverse = createCachedWeaverseInstance({
|
|
298
|
-
...configs,
|
|
299
|
-
data: page || {},
|
|
300
|
-
pageId: page?.id,
|
|
301
|
-
platformType: "shopify-hydrogen",
|
|
302
|
-
internal: { project, pageAssignment }
|
|
303
|
-
});
|
|
304
|
-
components.forEach((comp) => {
|
|
305
|
-
weaverse.registerElement({
|
|
306
|
-
type: comp?.schema?.type,
|
|
307
|
-
Component: comp?.default,
|
|
308
|
-
schema: comp?.schema,
|
|
309
|
-
loader: comp?.loader
|
|
310
|
-
});
|
|
311
|
-
});
|
|
312
|
-
return weaverse;
|
|
313
|
-
}
|
|
314
|
-
var ThemeProvider = createContext(null);
|
|
315
|
-
ThemeProvider.displayName = "WeaverseThemeProvider";
|
|
316
|
-
|
|
317
|
-
// src/hooks/use-theme-context.ts
|
|
318
|
-
function useThemeContext() {
|
|
319
|
-
let themeContext = useContext(ThemeProvider);
|
|
320
|
-
if (!themeContext) {
|
|
321
|
-
throw new Error(
|
|
322
|
-
`useThemeContext must be used within a ThemeProvider. Make sure to wrap your app in the withWeaverse HoC.`
|
|
323
|
-
);
|
|
324
|
-
}
|
|
325
|
-
return themeContext;
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
// src/hooks/use-theme-settings.ts
|
|
329
|
-
var ThemeSettingsStore = class {
|
|
330
|
-
settings = null;
|
|
331
|
-
listeners = [];
|
|
332
|
-
countries;
|
|
333
|
-
schema;
|
|
334
|
-
publicEnv;
|
|
335
|
-
constructor(data) {
|
|
336
|
-
let { theme, countries, schema, publicEnv } = data || {};
|
|
337
|
-
this.settings = theme || null;
|
|
338
|
-
this.countries = countries;
|
|
339
|
-
this.schema = schema;
|
|
340
|
-
this.publicEnv = publicEnv;
|
|
341
|
-
}
|
|
342
|
-
updateThemeSettings = (newSettings) => {
|
|
343
|
-
this.settings = { ...this.settings, ...newSettings };
|
|
344
|
-
this.emitChange();
|
|
345
|
-
};
|
|
346
|
-
subscribe = (listener) => {
|
|
347
|
-
this.listeners = [...this.listeners, listener];
|
|
348
|
-
return () => {
|
|
349
|
-
this.listeners = this.listeners.filter((l) => l !== listener);
|
|
350
|
-
};
|
|
351
|
-
};
|
|
352
|
-
getSnapshot = () => {
|
|
353
|
-
return this.settings;
|
|
354
|
-
};
|
|
355
|
-
getServerSnapshot = () => {
|
|
356
|
-
return this.settings;
|
|
357
|
-
};
|
|
358
|
-
emitChange = () => {
|
|
359
|
-
for (let listener of this.listeners) {
|
|
360
|
-
listener();
|
|
361
|
-
}
|
|
362
|
-
};
|
|
363
|
-
};
|
|
364
|
-
function useThemeSettings() {
|
|
365
|
-
let themeSettingsStore = useThemeContext();
|
|
366
|
-
let settings = useSyncExternalStore(
|
|
367
|
-
themeSettingsStore.subscribe,
|
|
368
|
-
themeSettingsStore.getSnapshot,
|
|
369
|
-
themeSettingsStore.getServerSnapshot
|
|
370
|
-
);
|
|
371
|
-
return settings;
|
|
372
|
-
}
|
|
373
|
-
|
|
374
416
|
// src/wrappers.ts
|
|
375
417
|
import { getSelectedProductOptions as hydrogen_getSelectedProductOptions } from "@shopify/hydrogen";
|
|
376
|
-
import { createContentSecurityPolicy as hydrogen_createContentSecurityPolicy } from "@shopify/hydrogen";
|
|
377
418
|
function getSelectedProductOptions(request) {
|
|
378
419
|
let options = hydrogen_getSelectedProductOptions(request);
|
|
379
420
|
return options.filter(
|
|
380
421
|
({ name }) => name !== "isDesignMode" && !name.startsWith("weaverse")
|
|
381
422
|
);
|
|
382
423
|
}
|
|
383
|
-
function createContentSecurityPolicy(request, directives) {
|
|
384
|
-
let weaverseDirectives = getWeaverseCsp(request);
|
|
385
|
-
return hydrogen_createContentSecurityPolicy({
|
|
386
|
-
...directives,
|
|
387
|
-
...weaverseDirectives
|
|
388
|
-
});
|
|
389
|
-
}
|
|
390
|
-
|
|
391
|
-
// src/WeaverseHydrogenRoot.tsx
|
|
392
|
-
import { Await, useLoaderData } from "@remix-run/react";
|
|
393
|
-
import { WeaverseRoot } from "@weaverse/react";
|
|
394
|
-
import React, { Suspense } from "react";
|
|
395
|
-
import { ErrorBoundary } from "react-error-boundary";
|
|
396
424
|
|
|
397
|
-
// src/
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
425
|
+
// src/index.ts
|
|
426
|
+
var WeaverseHydrogen = class extends Weaverse {
|
|
427
|
+
platformType = "shopify-hydrogen";
|
|
428
|
+
pageId;
|
|
429
|
+
internal;
|
|
430
|
+
requestInfo;
|
|
431
|
+
constructor(params, components) {
|
|
432
|
+
let { internal, pageId, requestInfo, ...coreParams } = params;
|
|
433
|
+
super({ ...coreParams, ItemConstructor: WeaverseHydrogenItem });
|
|
434
|
+
this.internal = internal;
|
|
435
|
+
this.pageId = pageId;
|
|
436
|
+
this.requestInfo = requestInfo;
|
|
437
|
+
this.registerComponents(components);
|
|
438
|
+
}
|
|
439
|
+
registerElement(element) {
|
|
440
|
+
super.registerElement(element);
|
|
441
|
+
}
|
|
442
|
+
registerComponents(components) {
|
|
443
|
+
components.forEach((comp) => {
|
|
444
|
+
this.registerElement({
|
|
445
|
+
type: comp?.schema?.type,
|
|
446
|
+
Component: comp?.default,
|
|
447
|
+
schema: comp?.schema,
|
|
448
|
+
loader: comp?.loader
|
|
449
|
+
});
|
|
450
|
+
});
|
|
451
|
+
}
|
|
452
|
+
};
|
|
453
|
+
var WeaverseHydrogenItem = class extends WeaverseItemStore {
|
|
454
|
+
constructor(intialData, weaverse) {
|
|
455
|
+
super(intialData, weaverse);
|
|
456
|
+
let { data, ...rest } = intialData;
|
|
457
|
+
this._store = { ...data, ...rest };
|
|
458
|
+
}
|
|
459
|
+
get Element() {
|
|
460
|
+
return super.Element;
|
|
461
|
+
}
|
|
462
|
+
get data() {
|
|
463
|
+
let defaultData = this.Element?.schema?.inspector?.flatMap((group) => group.inputs)?.reduce((a, { defaultValue, name }) => {
|
|
464
|
+
if (name && defaultValue !== null && defaultValue !== void 0) {
|
|
465
|
+
a[name] = defaultValue;
|
|
421
466
|
}
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
}
|
|
425
|
-
|
|
426
|
-
// src/WeaverseHydrogenRoot.tsx
|
|
427
|
-
function WeaverseHydrogenRoot({
|
|
428
|
-
errorComponent: ErrorComponent = FallbackError,
|
|
429
|
-
components
|
|
430
|
-
}) {
|
|
431
|
-
let loaderData = useLoaderData();
|
|
432
|
-
let data = loaderData?.weaverseData;
|
|
433
|
-
if (data) {
|
|
434
|
-
if (data instanceof Promise) {
|
|
435
|
-
return /* @__PURE__ */ React.createElement(ErrorBoundary, { fallbackRender: ErrorComponent }, /* @__PURE__ */ React.createElement(Suspense, null, /* @__PURE__ */ React.createElement(Await, { resolve: data }, (resolvedData) => {
|
|
436
|
-
return /* @__PURE__ */ React.createElement(RenderRoot, { data: resolvedData, components });
|
|
437
|
-
})));
|
|
438
|
-
}
|
|
439
|
-
return /* @__PURE__ */ React.createElement(RenderRoot, { data, components });
|
|
467
|
+
return a;
|
|
468
|
+
}, {});
|
|
469
|
+
return { ...defaultData, ...super.data };
|
|
440
470
|
}
|
|
441
|
-
return /* @__PURE__ */ React.createElement(
|
|
442
|
-
ErrorComponent,
|
|
443
|
-
{
|
|
444
|
-
error: { message: "No Weaverse data return from route loader!" }
|
|
445
|
-
}
|
|
446
|
-
);
|
|
447
|
-
}
|
|
448
|
-
function RenderRoot(props) {
|
|
449
|
-
let { data, components } = props;
|
|
450
|
-
let weaverse = createWeaverseInstance(data, components);
|
|
451
|
-
useStudio(weaverse);
|
|
452
|
-
return /* @__PURE__ */ React.createElement(WeaverseRoot, { context: weaverse });
|
|
453
|
-
}
|
|
454
|
-
var withWeaverse = (Component) => {
|
|
455
|
-
return (props) => {
|
|
456
|
-
let { weaverseTheme } = useLoaderData();
|
|
457
|
-
let themeSettingsStore = new ThemeSettingsStore(weaverseTheme);
|
|
458
|
-
return /* @__PURE__ */ React.createElement(ThemeProvider.Provider, { value: themeSettingsStore }, /* @__PURE__ */ React.createElement(Component, { ...props }));
|
|
459
|
-
};
|
|
460
471
|
};
|
|
461
|
-
function FallbackError({ error }) {
|
|
462
|
-
return /* @__PURE__ */ React.createElement("div", null, error?.message || "An unexpected error occurred");
|
|
463
|
-
}
|
|
464
472
|
export {
|
|
465
473
|
ThemeSettingsStore,
|
|
466
474
|
WeaverseClient,
|
|
475
|
+
WeaverseHydrogen,
|
|
476
|
+
WeaverseHydrogenItem,
|
|
467
477
|
WeaverseHydrogenRoot,
|
|
468
|
-
createContentSecurityPolicy,
|
|
469
478
|
getRequestQueries,
|
|
470
479
|
getSelectedProductOptions,
|
|
471
480
|
getWeaverseConfigs,
|
|
472
|
-
getWeaverseCsp,
|
|
473
481
|
useThemeSettings,
|
|
474
482
|
withWeaverse
|
|
475
483
|
};
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.
|
|
2
|
+
"version": "1.5.0",
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"typings": "dist/index.d.ts",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"@remix-run/react": "1.19.1",
|
|
36
36
|
"@shopify/hydrogen": "2023.7.8",
|
|
37
|
-
"@weaverse/react": "1.
|
|
37
|
+
"@weaverse/react": "1.5.0",
|
|
38
38
|
"react-error-boundary": "^4.0.11"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|