@weaverse/hydrogen 1.3.3 → 1.4.1
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.js
CHANGED
|
@@ -17,7 +17,6 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
17
17
|
}
|
|
18
18
|
return to;
|
|
19
19
|
};
|
|
20
|
-
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
21
20
|
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
22
21
|
// If the importer is in node compatibility mode or this is not an ESM
|
|
23
22
|
// file that has been converted to a CommonJS file using a Babel-
|
|
@@ -33,24 +32,192 @@ var src_exports = {};
|
|
|
33
32
|
__export(src_exports, {
|
|
34
33
|
ThemeSettingsStore: () => ThemeSettingsStore,
|
|
35
34
|
WeaverseClient: () => WeaverseClient,
|
|
35
|
+
WeaverseHydrogen: () => WeaverseHydrogen,
|
|
36
|
+
WeaverseHydrogenItem: () => WeaverseHydrogenItem,
|
|
36
37
|
WeaverseHydrogenRoot: () => WeaverseHydrogenRoot,
|
|
37
|
-
createContentSecurityPolicy: () => createContentSecurityPolicy,
|
|
38
38
|
getRequestQueries: () => getRequestQueries,
|
|
39
39
|
getSelectedProductOptions: () => getSelectedProductOptions,
|
|
40
40
|
getWeaverseConfigs: () => getWeaverseConfigs,
|
|
41
|
-
getWeaverseCsp: () => getWeaverseCsp,
|
|
42
41
|
useThemeSettings: () => useThemeSettings,
|
|
43
42
|
withWeaverse: () => withWeaverse
|
|
44
43
|
});
|
|
45
44
|
module.exports = __toCommonJS(src_exports);
|
|
46
|
-
|
|
45
|
+
var import_react11 = require("@weaverse/react");
|
|
47
46
|
|
|
48
|
-
// src/
|
|
49
|
-
var
|
|
47
|
+
// src/WeaverseHydrogenRoot.tsx
|
|
48
|
+
var import_react8 = require("@remix-run/react");
|
|
49
|
+
var import_react9 = require("@weaverse/react");
|
|
50
|
+
var import_react10 = __toESM(require("react"));
|
|
51
|
+
var import_react_error_boundary = require("react-error-boundary");
|
|
52
|
+
|
|
53
|
+
// src/context.ts
|
|
54
|
+
var import_react = require("@weaverse/react");
|
|
55
|
+
var import_react2 = require("react");
|
|
56
|
+
function createCachedWeaverseInstance(params, components) {
|
|
57
|
+
if (import_react.isBrowser) {
|
|
58
|
+
window.__weaverses = window.__weaverses || [];
|
|
59
|
+
let weaverse = window.__weaverses.find((w) => {
|
|
60
|
+
let { pathname, search } = w.requestInfo;
|
|
61
|
+
let { __cachedId } = w.data;
|
|
62
|
+
return pathname === params.requestInfo.pathname && search === params.requestInfo.search && __cachedId === params.data.__cachedId;
|
|
63
|
+
});
|
|
64
|
+
if (!weaverse) {
|
|
65
|
+
weaverse = new WeaverseHydrogen(params, components);
|
|
66
|
+
window.__weaverses.push(weaverse);
|
|
67
|
+
console.log("\u{1F4BF} Weaverse", weaverse);
|
|
68
|
+
}
|
|
69
|
+
return weaverse;
|
|
70
|
+
}
|
|
71
|
+
return new WeaverseHydrogen(params, components);
|
|
72
|
+
}
|
|
73
|
+
function createWeaverseInstance(weaverseData, components) {
|
|
74
|
+
let { page, configs, project, pageAssignment } = weaverseData || {};
|
|
75
|
+
let weaverse = createCachedWeaverseInstance(
|
|
76
|
+
{
|
|
77
|
+
...configs,
|
|
78
|
+
data: page || {},
|
|
79
|
+
pageId: page?.id,
|
|
80
|
+
internal: { project, pageAssignment }
|
|
81
|
+
},
|
|
82
|
+
components
|
|
83
|
+
);
|
|
84
|
+
return weaverse;
|
|
85
|
+
}
|
|
86
|
+
var ThemeProvider = (0, import_react2.createContext)(null);
|
|
87
|
+
ThemeProvider.displayName = "WeaverseThemeProvider";
|
|
88
|
+
|
|
89
|
+
// src/hooks/use-studio.ts
|
|
90
|
+
var import_react4 = require("@remix-run/react");
|
|
91
|
+
var import_react5 = require("@weaverse/react");
|
|
92
|
+
var import_react6 = require("react");
|
|
93
|
+
|
|
94
|
+
// src/hooks/use-theme-context.ts
|
|
95
|
+
var import_react3 = require("react");
|
|
96
|
+
function useThemeContext() {
|
|
97
|
+
let themeContext = (0, import_react3.useContext)(ThemeProvider);
|
|
98
|
+
if (!themeContext) {
|
|
99
|
+
throw new Error(
|
|
100
|
+
`useThemeContext must be used within a ThemeProvider. Make sure to wrap your app in the withWeaverse HoC.`
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
return themeContext;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// src/hooks/use-studio.ts
|
|
107
|
+
function useStudio(weaverse) {
|
|
108
|
+
let { revalidate } = (0, import_react4.useRevalidator)();
|
|
109
|
+
let navigate = (0, import_react4.useNavigate)();
|
|
110
|
+
let themeSettingsStore = useThemeContext();
|
|
111
|
+
let { isDesignMode, weaverseHost, weaverseVersion } = weaverse;
|
|
112
|
+
let isStudio = import_react5.isIframe && isDesignMode && weaverseHost && weaverseVersion;
|
|
113
|
+
(0, import_react6.useEffect)(() => {
|
|
114
|
+
if (isStudio) {
|
|
115
|
+
weaverse.internal = {
|
|
116
|
+
...weaverse.internal,
|
|
117
|
+
navigate,
|
|
118
|
+
revalidate,
|
|
119
|
+
themeSettingsStore
|
|
120
|
+
};
|
|
121
|
+
window.__weaverse = weaverse;
|
|
122
|
+
if (window.weaverseStudio) {
|
|
123
|
+
window.weaverseStudio.init(weaverse);
|
|
124
|
+
} else {
|
|
125
|
+
let studioSrc = `${weaverseHost}/assets/studio/hydrogen/index.js?v=${weaverseVersion}`;
|
|
126
|
+
(0, import_react5.loadScript)(studioSrc);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}, [weaverse]);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// src/hooks/use-theme-settings.ts
|
|
133
|
+
var import_react7 = require("react");
|
|
134
|
+
var ThemeSettingsStore = class {
|
|
135
|
+
settings = null;
|
|
136
|
+
listeners = [];
|
|
137
|
+
countries;
|
|
138
|
+
schema;
|
|
139
|
+
publicEnv;
|
|
140
|
+
constructor(data) {
|
|
141
|
+
let { theme, countries, schema, publicEnv } = data || {};
|
|
142
|
+
this.settings = theme || null;
|
|
143
|
+
this.countries = countries;
|
|
144
|
+
this.schema = schema;
|
|
145
|
+
this.publicEnv = publicEnv;
|
|
146
|
+
}
|
|
147
|
+
updateThemeSettings = (newSettings) => {
|
|
148
|
+
this.settings = { ...this.settings, ...newSettings };
|
|
149
|
+
this.emitChange();
|
|
150
|
+
};
|
|
151
|
+
subscribe = (listener) => {
|
|
152
|
+
this.listeners = [...this.listeners, listener];
|
|
153
|
+
return () => {
|
|
154
|
+
this.listeners = this.listeners.filter((l) => l !== listener);
|
|
155
|
+
};
|
|
156
|
+
};
|
|
157
|
+
getSnapshot = () => {
|
|
158
|
+
return this.settings;
|
|
159
|
+
};
|
|
160
|
+
getServerSnapshot = () => {
|
|
161
|
+
return this.settings;
|
|
162
|
+
};
|
|
163
|
+
emitChange = () => {
|
|
164
|
+
for (let listener of this.listeners) {
|
|
165
|
+
listener();
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
};
|
|
169
|
+
function useThemeSettings() {
|
|
170
|
+
let themeSettingsStore = useThemeContext();
|
|
171
|
+
let settings = (0, import_react7.useSyncExternalStore)(
|
|
172
|
+
themeSettingsStore.subscribe,
|
|
173
|
+
themeSettingsStore.getSnapshot,
|
|
174
|
+
themeSettingsStore.getServerSnapshot
|
|
175
|
+
);
|
|
176
|
+
return settings;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// src/WeaverseHydrogenRoot.tsx
|
|
180
|
+
function WeaverseHydrogenRoot({
|
|
181
|
+
errorComponent: ErrorComponent = FallbackError,
|
|
182
|
+
components
|
|
183
|
+
}) {
|
|
184
|
+
let loaderData = (0, import_react8.useLoaderData)();
|
|
185
|
+
let data = loaderData?.weaverseData;
|
|
186
|
+
if (data) {
|
|
187
|
+
if (data instanceof Promise) {
|
|
188
|
+
return /* @__PURE__ */ import_react10.default.createElement(import_react_error_boundary.ErrorBoundary, { fallbackRender: ErrorComponent }, /* @__PURE__ */ import_react10.default.createElement(import_react10.Suspense, null, /* @__PURE__ */ import_react10.default.createElement(import_react8.Await, { resolve: data }, (resolvedData) => {
|
|
189
|
+
return /* @__PURE__ */ import_react10.default.createElement(RenderRoot, { data: resolvedData, components });
|
|
190
|
+
})));
|
|
191
|
+
}
|
|
192
|
+
return /* @__PURE__ */ import_react10.default.createElement(RenderRoot, { data, components });
|
|
193
|
+
}
|
|
194
|
+
return /* @__PURE__ */ import_react10.default.createElement(
|
|
195
|
+
ErrorComponent,
|
|
196
|
+
{
|
|
197
|
+
error: { message: "No Weaverse data return from route loader!" }
|
|
198
|
+
}
|
|
199
|
+
);
|
|
200
|
+
}
|
|
201
|
+
function RenderRoot(props) {
|
|
202
|
+
let { data, components } = props;
|
|
203
|
+
let weaverse = createWeaverseInstance(data, components);
|
|
204
|
+
useStudio(weaverse);
|
|
205
|
+
return /* @__PURE__ */ import_react10.default.createElement(import_react9.WeaverseRoot, { context: weaverse });
|
|
206
|
+
}
|
|
207
|
+
function withWeaverse(Component) {
|
|
208
|
+
return (props) => {
|
|
209
|
+
let { weaverseTheme } = (0, import_react8.useLoaderData)();
|
|
210
|
+
let themeSettingsStore = new ThemeSettingsStore(weaverseTheme);
|
|
211
|
+
return /* @__PURE__ */ import_react10.default.createElement(ThemeProvider.Provider, { value: themeSettingsStore }, /* @__PURE__ */ import_react10.default.createElement(Component, { ...props }));
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
function FallbackError({ error }) {
|
|
215
|
+
return /* @__PURE__ */ import_react10.default.createElement("div", null, error?.message || "An unexpected error occurred");
|
|
216
|
+
}
|
|
50
217
|
|
|
51
218
|
// package.json
|
|
52
219
|
var package_default = {
|
|
53
|
-
version: "1.
|
|
220
|
+
version: "1.4.1",
|
|
54
221
|
license: "MIT",
|
|
55
222
|
main: "dist/index.js",
|
|
56
223
|
typings: "dist/index.d.ts",
|
|
@@ -85,7 +252,7 @@ var package_default = {
|
|
|
85
252
|
dependencies: {
|
|
86
253
|
"@remix-run/react": "1.19.1",
|
|
87
254
|
"@shopify/hydrogen": "2023.7.8",
|
|
88
|
-
"@weaverse/react": "1.
|
|
255
|
+
"@weaverse/react": "1.4.1",
|
|
89
256
|
"react-error-boundary": "^4.0.11"
|
|
90
257
|
},
|
|
91
258
|
devDependencies: {
|
|
@@ -124,43 +291,21 @@ function getWeaverseConfigs(request, env) {
|
|
|
124
291
|
}
|
|
125
292
|
};
|
|
126
293
|
}
|
|
127
|
-
function getWeaverseCsp(request) {
|
|
128
|
-
let url = new URL(request.url);
|
|
129
|
-
let weaverseHost = url.searchParams.get("weaverseHost");
|
|
130
|
-
let weaverseHosts = ["https://*.weaverse.io"];
|
|
131
|
-
if (weaverseHost) {
|
|
132
|
-
weaverseHosts.push(weaverseHost);
|
|
133
|
-
}
|
|
134
|
-
return {
|
|
135
|
-
frameAncestors: weaverseHosts,
|
|
136
|
-
defaultSrc: [
|
|
137
|
-
"'self'",
|
|
138
|
-
"https://cdn.shopify.com",
|
|
139
|
-
"https://shopify.com",
|
|
140
|
-
"https://*.youtube.com",
|
|
141
|
-
...weaverseHosts
|
|
142
|
-
],
|
|
143
|
-
styleSrc: [
|
|
144
|
-
"'self'",
|
|
145
|
-
"'unsafe-inline'",
|
|
146
|
-
"https://cdn.shopify.com",
|
|
147
|
-
...weaverseHosts
|
|
148
|
-
]
|
|
149
|
-
};
|
|
150
|
-
}
|
|
151
294
|
|
|
152
|
-
// src/client.ts
|
|
295
|
+
// src/weaverse-client.ts
|
|
153
296
|
var WeaverseClient = class {
|
|
154
297
|
API = "api/public/project";
|
|
155
298
|
clientVersion = package_default.version;
|
|
299
|
+
basePageConfigs;
|
|
300
|
+
basePageRequestBody;
|
|
156
301
|
storefront;
|
|
302
|
+
// storefront: Storefront<I18nLocale>
|
|
157
303
|
components;
|
|
158
304
|
countries;
|
|
159
305
|
themeSchema;
|
|
160
306
|
configs;
|
|
161
|
-
basePageConfigs;
|
|
162
|
-
basePageRequestBody;
|
|
163
307
|
withCache;
|
|
308
|
+
// withCache: ReturnType<typeof createWithCache>
|
|
164
309
|
constructor(args) {
|
|
165
310
|
let { configs, storefront, components, countries, withCache, themeSchema } = args;
|
|
166
311
|
this.storefront = storefront;
|
|
@@ -227,7 +372,7 @@ var WeaverseClient = class {
|
|
|
227
372
|
return new Promise(async (resolve, reject) => {
|
|
228
373
|
try {
|
|
229
374
|
if (!this.configs.projectId) {
|
|
230
|
-
|
|
375
|
+
throw new Error("Missing Weaverse projectId!");
|
|
231
376
|
}
|
|
232
377
|
let { request, params } = args;
|
|
233
378
|
let { strategy, ...pageLoadParams } = configs;
|
|
@@ -252,11 +397,9 @@ var WeaverseClient = class {
|
|
|
252
397
|
}
|
|
253
398
|
let { page, project, pageAssignment } = payload;
|
|
254
399
|
if (!page || !project || !pageAssignment) {
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
payload?.error || "Invalid Weaverse project payload!"
|
|
259
|
-
)
|
|
400
|
+
throw new Error(
|
|
401
|
+
// @ts-ignore
|
|
402
|
+
payload?.error || "Invalid Weaverse project payload!"
|
|
260
403
|
);
|
|
261
404
|
}
|
|
262
405
|
if (page?.items) {
|
|
@@ -310,212 +453,72 @@ var WeaverseClient = class {
|
|
|
310
453
|
};
|
|
311
454
|
};
|
|
312
455
|
|
|
313
|
-
// src/hooks/use-theme-settings.ts
|
|
314
|
-
var import_react4 = require("react");
|
|
315
|
-
|
|
316
|
-
// src/hooks/use-theme-context.ts
|
|
317
|
-
var import_react3 = require("react");
|
|
318
|
-
|
|
319
|
-
// src/context.ts
|
|
320
|
-
var import_react = require("@weaverse/react");
|
|
321
|
-
var import_react2 = require("react");
|
|
322
|
-
function createCachedWeaverseInstance(init) {
|
|
323
|
-
if (import_react.isBrowser) {
|
|
324
|
-
window.__weaverses = window.__weaverses || [];
|
|
325
|
-
let weaverse = window.__weaverses.find((w) => {
|
|
326
|
-
let { pathname, search } = w.requestInfo;
|
|
327
|
-
let { __cachedId } = w.data;
|
|
328
|
-
return pathname === init.requestInfo.pathname && search === init.requestInfo.search && __cachedId === init.data.__cachedId;
|
|
329
|
-
});
|
|
330
|
-
if (!weaverse) {
|
|
331
|
-
weaverse = new import_react.Weaverse(init);
|
|
332
|
-
window.__weaverses.push(weaverse);
|
|
333
|
-
console.log("\u{1F4BF} Weaverse", weaverse);
|
|
334
|
-
}
|
|
335
|
-
return weaverse;
|
|
336
|
-
}
|
|
337
|
-
return new import_react.Weaverse(init);
|
|
338
|
-
}
|
|
339
|
-
function createWeaverseInstance(weaverseData, components) {
|
|
340
|
-
let { page, configs, project, pageAssignment } = weaverseData || {};
|
|
341
|
-
let weaverse = createCachedWeaverseInstance({
|
|
342
|
-
...configs,
|
|
343
|
-
data: page || {},
|
|
344
|
-
pageId: page?.id,
|
|
345
|
-
platformType: "shopify-hydrogen",
|
|
346
|
-
internal: { project, pageAssignment }
|
|
347
|
-
});
|
|
348
|
-
components.forEach((comp) => {
|
|
349
|
-
weaverse.registerElement({
|
|
350
|
-
type: comp?.schema?.type,
|
|
351
|
-
Component: comp?.default,
|
|
352
|
-
schema: comp?.schema,
|
|
353
|
-
loader: comp?.loader
|
|
354
|
-
});
|
|
355
|
-
});
|
|
356
|
-
return weaverse;
|
|
357
|
-
}
|
|
358
|
-
var ThemeProvider = (0, import_react2.createContext)(null);
|
|
359
|
-
ThemeProvider.displayName = "WeaverseThemeProvider";
|
|
360
|
-
|
|
361
|
-
// src/hooks/use-theme-context.ts
|
|
362
|
-
function useThemeContext() {
|
|
363
|
-
let themeContext = (0, import_react3.useContext)(ThemeProvider);
|
|
364
|
-
if (!themeContext) {
|
|
365
|
-
throw new Error(
|
|
366
|
-
`useThemeContext must be used within a ThemeProvider. Make sure to wrap your app in the withWeaverse HoC.`
|
|
367
|
-
);
|
|
368
|
-
}
|
|
369
|
-
return themeContext;
|
|
370
|
-
}
|
|
371
|
-
|
|
372
|
-
// src/hooks/use-theme-settings.ts
|
|
373
|
-
var ThemeSettingsStore = class {
|
|
374
|
-
settings = null;
|
|
375
|
-
listeners = [];
|
|
376
|
-
countries;
|
|
377
|
-
schema;
|
|
378
|
-
publicEnv;
|
|
379
|
-
constructor(data) {
|
|
380
|
-
let { theme, countries, schema, publicEnv } = data || {};
|
|
381
|
-
this.settings = theme || null;
|
|
382
|
-
this.countries = countries;
|
|
383
|
-
this.schema = schema;
|
|
384
|
-
this.publicEnv = publicEnv;
|
|
385
|
-
}
|
|
386
|
-
updateThemeSettings = (newSettings) => {
|
|
387
|
-
this.settings = { ...this.settings, ...newSettings };
|
|
388
|
-
this.emitChange();
|
|
389
|
-
};
|
|
390
|
-
subscribe = (listener) => {
|
|
391
|
-
this.listeners = [...this.listeners, listener];
|
|
392
|
-
return () => {
|
|
393
|
-
this.listeners = this.listeners.filter((l) => l !== listener);
|
|
394
|
-
};
|
|
395
|
-
};
|
|
396
|
-
getSnapshot = () => {
|
|
397
|
-
return this.settings;
|
|
398
|
-
};
|
|
399
|
-
getServerSnapshot = () => {
|
|
400
|
-
return this.settings;
|
|
401
|
-
};
|
|
402
|
-
emitChange = () => {
|
|
403
|
-
for (let listener of this.listeners) {
|
|
404
|
-
listener();
|
|
405
|
-
}
|
|
406
|
-
};
|
|
407
|
-
};
|
|
408
|
-
function useThemeSettings() {
|
|
409
|
-
let themeSettingsStore = useThemeContext();
|
|
410
|
-
let settings = (0, import_react4.useSyncExternalStore)(
|
|
411
|
-
themeSettingsStore.subscribe,
|
|
412
|
-
themeSettingsStore.getSnapshot,
|
|
413
|
-
themeSettingsStore.getServerSnapshot
|
|
414
|
-
);
|
|
415
|
-
return settings;
|
|
416
|
-
}
|
|
417
|
-
|
|
418
456
|
// src/wrappers.ts
|
|
419
|
-
var
|
|
420
|
-
var import_hydrogen3 = require("@shopify/hydrogen");
|
|
457
|
+
var import_hydrogen = require("@shopify/hydrogen");
|
|
421
458
|
function getSelectedProductOptions(request) {
|
|
422
|
-
let options = (0,
|
|
459
|
+
let options = (0, import_hydrogen.getSelectedProductOptions)(request);
|
|
423
460
|
return options.filter(
|
|
424
461
|
({ name }) => name !== "isDesignMode" && !name.startsWith("weaverse")
|
|
425
462
|
);
|
|
426
463
|
}
|
|
427
|
-
function createContentSecurityPolicy(request, directives) {
|
|
428
|
-
let weaverseDirectives = getWeaverseCsp(request);
|
|
429
|
-
return (0, import_hydrogen3.createContentSecurityPolicy)({
|
|
430
|
-
...directives,
|
|
431
|
-
...weaverseDirectives
|
|
432
|
-
});
|
|
433
|
-
}
|
|
434
|
-
|
|
435
|
-
// src/WeaverseHydrogenRoot.tsx
|
|
436
|
-
var import_react8 = require("@remix-run/react");
|
|
437
|
-
var import_react9 = require("@weaverse/react");
|
|
438
|
-
var import_react10 = __toESM(require("react"));
|
|
439
|
-
var import_react_error_boundary = require("react-error-boundary");
|
|
440
464
|
|
|
441
|
-
// src/
|
|
442
|
-
var
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
+
// src/index.ts
|
|
466
|
+
var WeaverseHydrogen = class extends import_react11.Weaverse {
|
|
467
|
+
platformType = "shopify-hydrogen";
|
|
468
|
+
pageId;
|
|
469
|
+
internal;
|
|
470
|
+
requestInfo;
|
|
471
|
+
constructor(params, components) {
|
|
472
|
+
let { internal, pageId, requestInfo, ...coreParams } = params;
|
|
473
|
+
super({ ...coreParams, ItemConstructor: WeaverseHydrogenItem });
|
|
474
|
+
this.internal = internal;
|
|
475
|
+
this.pageId = pageId;
|
|
476
|
+
this.requestInfo = requestInfo;
|
|
477
|
+
this.registerComponents(components);
|
|
478
|
+
}
|
|
479
|
+
registerElement(element) {
|
|
480
|
+
super.registerElement(element);
|
|
481
|
+
}
|
|
482
|
+
registerComponents(components) {
|
|
483
|
+
components.forEach((comp) => {
|
|
484
|
+
this.registerElement({
|
|
485
|
+
type: comp?.schema?.type,
|
|
486
|
+
Component: comp?.default,
|
|
487
|
+
schema: comp?.schema,
|
|
488
|
+
loader: comp?.loader
|
|
489
|
+
});
|
|
490
|
+
});
|
|
491
|
+
}
|
|
492
|
+
};
|
|
493
|
+
var WeaverseHydrogenItem = class extends import_react11.WeaverseItemStore {
|
|
494
|
+
constructor(intialData, weaverse) {
|
|
495
|
+
super(intialData, weaverse);
|
|
496
|
+
let { data, ...rest } = intialData;
|
|
497
|
+
this._store = { ...data, ...rest };
|
|
498
|
+
}
|
|
499
|
+
get Element() {
|
|
500
|
+
return super.Element;
|
|
501
|
+
}
|
|
502
|
+
get data() {
|
|
503
|
+
let defaultData = this.Element?.schema?.inspector?.flatMap((group) => group.inputs)?.reduce((a, { defaultValue, name }) => {
|
|
504
|
+
if (name && defaultValue !== null && defaultValue !== void 0) {
|
|
505
|
+
a[name] = defaultValue;
|
|
465
506
|
}
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
}
|
|
469
|
-
|
|
470
|
-
// src/WeaverseHydrogenRoot.tsx
|
|
471
|
-
function WeaverseHydrogenRoot({
|
|
472
|
-
errorComponent: ErrorComponent = FallbackError,
|
|
473
|
-
components
|
|
474
|
-
}) {
|
|
475
|
-
let loaderData = (0, import_react8.useLoaderData)();
|
|
476
|
-
let data = loaderData?.weaverseData;
|
|
477
|
-
if (data) {
|
|
478
|
-
if (data instanceof Promise) {
|
|
479
|
-
return /* @__PURE__ */ import_react10.default.createElement(import_react_error_boundary.ErrorBoundary, { fallbackRender: ErrorComponent }, /* @__PURE__ */ import_react10.default.createElement(import_react10.Suspense, null, /* @__PURE__ */ import_react10.default.createElement(import_react8.Await, { resolve: data }, (resolvedData) => {
|
|
480
|
-
return /* @__PURE__ */ import_react10.default.createElement(RenderRoot, { data: resolvedData, components });
|
|
481
|
-
})));
|
|
482
|
-
}
|
|
483
|
-
return /* @__PURE__ */ import_react10.default.createElement(RenderRoot, { data, components });
|
|
507
|
+
return a;
|
|
508
|
+
}, {});
|
|
509
|
+
return { ...defaultData, ...super.data };
|
|
484
510
|
}
|
|
485
|
-
return /* @__PURE__ */ import_react10.default.createElement(
|
|
486
|
-
ErrorComponent,
|
|
487
|
-
{
|
|
488
|
-
error: { message: "No Weaverse data return from route loader!" }
|
|
489
|
-
}
|
|
490
|
-
);
|
|
491
|
-
}
|
|
492
|
-
function RenderRoot(props) {
|
|
493
|
-
let { data, components } = props;
|
|
494
|
-
let weaverse = createWeaverseInstance(data, components);
|
|
495
|
-
useStudio(weaverse);
|
|
496
|
-
return /* @__PURE__ */ import_react10.default.createElement(import_react9.WeaverseRoot, { context: weaverse });
|
|
497
|
-
}
|
|
498
|
-
var withWeaverse = (Component) => {
|
|
499
|
-
return (props) => {
|
|
500
|
-
let { weaverseTheme } = (0, import_react8.useLoaderData)();
|
|
501
|
-
let themeSettingsStore = new ThemeSettingsStore(weaverseTheme);
|
|
502
|
-
return /* @__PURE__ */ import_react10.default.createElement(ThemeProvider.Provider, { value: themeSettingsStore }, /* @__PURE__ */ import_react10.default.createElement(Component, { ...props }));
|
|
503
|
-
};
|
|
504
511
|
};
|
|
505
|
-
function FallbackError({ error }) {
|
|
506
|
-
return /* @__PURE__ */ import_react10.default.createElement("div", null, error?.message || "An unexpected error occurred");
|
|
507
|
-
}
|
|
508
512
|
// Annotate the CommonJS export names for ESM import in node:
|
|
509
513
|
0 && (module.exports = {
|
|
510
514
|
ThemeSettingsStore,
|
|
511
515
|
WeaverseClient,
|
|
516
|
+
WeaverseHydrogen,
|
|
517
|
+
WeaverseHydrogenItem,
|
|
512
518
|
WeaverseHydrogenRoot,
|
|
513
|
-
createContentSecurityPolicy,
|
|
514
519
|
getRequestQueries,
|
|
515
520
|
getSelectedProductOptions,
|
|
516
521
|
getWeaverseConfigs,
|
|
517
|
-
getWeaverseCsp,
|
|
518
522
|
useThemeSettings,
|
|
519
|
-
withWeaverse
|
|
520
|
-
...require("@weaverse/react")
|
|
523
|
+
withWeaverse
|
|
521
524
|
});
|