@weaverse/hydrogen 5.0.0 → 5.1.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 +4 -2
- package/dist/index.d.ts +4 -2
- package/dist/index.js +280 -220
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +280 -220
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
- package/readme.md +37 -20
package/dist/index.mjs
CHANGED
|
@@ -12,7 +12,52 @@ var __export = (target, all) => {
|
|
|
12
12
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
13
13
|
};
|
|
14
14
|
|
|
15
|
+
// src/components/main.tsx
|
|
16
|
+
var main_exports = {};
|
|
17
|
+
__export(main_exports, {
|
|
18
|
+
default: () => main_default,
|
|
19
|
+
schema: () => schema
|
|
20
|
+
});
|
|
21
|
+
function Main(props) {
|
|
22
|
+
let { children, dangerouslySetInnerHTML, ...rest } = props;
|
|
23
|
+
return /* @__PURE__ */ jsx(
|
|
24
|
+
"div",
|
|
25
|
+
{
|
|
26
|
+
...rest,
|
|
27
|
+
children,
|
|
28
|
+
dangerouslySetInnerHTML: children ? void 0 : dangerouslySetInnerHTML
|
|
29
|
+
}
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
var main_default = Main;
|
|
33
|
+
var schema = {
|
|
34
|
+
type: "main",
|
|
35
|
+
title: "Main",
|
|
36
|
+
settings: []
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
// src/components/index.ts
|
|
40
|
+
var defaultComponents = [main_exports];
|
|
41
|
+
|
|
15
42
|
// src/utils/index.ts
|
|
43
|
+
var warnedTypes = /* @__PURE__ */ new Set();
|
|
44
|
+
function logOnce(type, message) {
|
|
45
|
+
if (!warnedTypes.has(type)) {
|
|
46
|
+
console.warn(message);
|
|
47
|
+
warnedTypes.add(type);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function deepMergeArrays(target, source) {
|
|
51
|
+
return [...target, ...source];
|
|
52
|
+
}
|
|
53
|
+
function mergeInspectorSettings(settings, inspector, type) {
|
|
54
|
+
if (!inspector?.length) return settings;
|
|
55
|
+
if (!settings?.length) return inspector;
|
|
56
|
+
console.info(
|
|
57
|
+
`Schema "${type}": Both 'settings' and 'inspector' found. Using 'settings' with 'inspector' as fallback.`
|
|
58
|
+
);
|
|
59
|
+
return deepMergeArrays(settings, inspector);
|
|
60
|
+
}
|
|
16
61
|
function getRequestQueries(request) {
|
|
17
62
|
let url = new URL(request.url);
|
|
18
63
|
return Array.from(url.searchParams.entries()).reduce(
|
|
@@ -58,9 +103,53 @@ function getWeaverseConfigs(request, env) {
|
|
|
58
103
|
}
|
|
59
104
|
function generateDataFromSchema(schema2) {
|
|
60
105
|
let data = {};
|
|
61
|
-
let
|
|
62
|
-
|
|
63
|
-
|
|
106
|
+
let inspectorGroups = [];
|
|
107
|
+
const isComponentSchema = (s) => {
|
|
108
|
+
return "type" in s && typeof s.type === "string";
|
|
109
|
+
};
|
|
110
|
+
if (isComponentSchema(schema2)) {
|
|
111
|
+
if (schema2.settings) {
|
|
112
|
+
inspectorGroups = schema2.settings;
|
|
113
|
+
}
|
|
114
|
+
if (schema2.inspector) {
|
|
115
|
+
if (schema2.settings?.length) {
|
|
116
|
+
inspectorGroups = mergeInspectorSettings(
|
|
117
|
+
schema2.settings,
|
|
118
|
+
schema2.inspector,
|
|
119
|
+
schema2.type || "unknown"
|
|
120
|
+
);
|
|
121
|
+
} else {
|
|
122
|
+
inspectorGroups = schema2.inspector;
|
|
123
|
+
if (schema2.type) {
|
|
124
|
+
logOnce(
|
|
125
|
+
schema2.type,
|
|
126
|
+
`\u26A0\uFE0F Schema "${schema2.type}": The 'inspector' property is deprecated. Please use 'settings' instead.`
|
|
127
|
+
);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
} else {
|
|
132
|
+
if (schema2.settings) {
|
|
133
|
+
inspectorGroups = schema2.settings;
|
|
134
|
+
}
|
|
135
|
+
if (schema2.inspector) {
|
|
136
|
+
if (schema2.settings?.length) {
|
|
137
|
+
inspectorGroups = mergeInspectorSettings(
|
|
138
|
+
schema2.settings,
|
|
139
|
+
schema2.inspector,
|
|
140
|
+
"Theme Schema"
|
|
141
|
+
);
|
|
142
|
+
} else {
|
|
143
|
+
inspectorGroups = schema2.inspector;
|
|
144
|
+
logOnce(
|
|
145
|
+
"ThemeSchema",
|
|
146
|
+
`\u26A0\uFE0F Theme Schema: The 'inspector' property is deprecated. Please use 'settings' instead.`
|
|
147
|
+
);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
if (inspectorGroups?.length) {
|
|
152
|
+
for (let group of inspectorGroups) {
|
|
64
153
|
for (let input of group.inputs) {
|
|
65
154
|
let { name, defaultValue } = input;
|
|
66
155
|
if (name && defaultValue !== null && defaultValue !== void 0) {
|
|
@@ -132,8 +221,195 @@ function getPreviewData(type, components, weaverseHost) {
|
|
|
132
221
|
}
|
|
133
222
|
};
|
|
134
223
|
}
|
|
224
|
+
var ThemeSettingsStore = class extends EventEmitter {
|
|
225
|
+
settings = {};
|
|
226
|
+
schema;
|
|
227
|
+
publicEnv;
|
|
228
|
+
constructor(data) {
|
|
229
|
+
super();
|
|
230
|
+
let { theme, schema: schema2, publicEnv } = data || {};
|
|
231
|
+
this.settings = { ...theme };
|
|
232
|
+
this.schema = schema2;
|
|
233
|
+
this.publicEnv = publicEnv;
|
|
234
|
+
if (isBrowser) {
|
|
235
|
+
window.__weaverseThemeSettingsStore = this;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
updateThemeSettings = (newSettings) => {
|
|
239
|
+
this.settings = {
|
|
240
|
+
...this.settings,
|
|
241
|
+
...newSettings
|
|
242
|
+
};
|
|
243
|
+
this.emit(this.settings);
|
|
244
|
+
};
|
|
245
|
+
getSnapshot = () => {
|
|
246
|
+
return this.settings;
|
|
247
|
+
};
|
|
248
|
+
getServerSnapshot = () => {
|
|
249
|
+
return this.settings;
|
|
250
|
+
};
|
|
251
|
+
};
|
|
252
|
+
function useThemeSettingsStore() {
|
|
253
|
+
let data = useRouteLoaderData("root");
|
|
254
|
+
if (isBrowser && window.__weaverseThemeSettingsStore) {
|
|
255
|
+
return window.__weaverseThemeSettingsStore;
|
|
256
|
+
}
|
|
257
|
+
return new ThemeSettingsStore(data?.weaverseTheme);
|
|
258
|
+
}
|
|
135
259
|
|
|
136
|
-
// src/
|
|
260
|
+
// src/utils/use-studio.ts
|
|
261
|
+
function useStudio(weaverse) {
|
|
262
|
+
let { revalidate } = useRevalidator();
|
|
263
|
+
let navigation = useNavigation();
|
|
264
|
+
let { pathname, search } = useLocation();
|
|
265
|
+
let navigate = useNavigate();
|
|
266
|
+
let themeSettingsStore = useThemeSettingsStore();
|
|
267
|
+
let { isDesignMode, weaverseHost, weaverseVersion, isPreviewMode } = weaverse;
|
|
268
|
+
useEffect(() => {
|
|
269
|
+
if (navigation.state === "idle") {
|
|
270
|
+
if (isPreviewMode) {
|
|
271
|
+
let previewSrc = `${weaverseHost}/static/studio/hydrogen/preview.js?v=${weaverseVersion}`;
|
|
272
|
+
loadScript(previewSrc).catch(console.error);
|
|
273
|
+
} else if (isDesignMode) {
|
|
274
|
+
weaverse.internal = {
|
|
275
|
+
...weaverse.internal,
|
|
276
|
+
navigate,
|
|
277
|
+
revalidate,
|
|
278
|
+
themeSettingsStore
|
|
279
|
+
};
|
|
280
|
+
let studioSrc = `${weaverseHost}/static/studio/hydrogen/index.js?v=${weaverseVersion}`;
|
|
281
|
+
loadScript(studioSrc).then(() => {
|
|
282
|
+
window.weaverseStudio?.init(weaverse);
|
|
283
|
+
}).catch(console.error);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
}, [pathname, search, navigation.state]);
|
|
287
|
+
usePixel(weaverse);
|
|
288
|
+
}
|
|
289
|
+
function usePixel(context) {
|
|
290
|
+
let { projectId, pageId, weaverseHost, isDesignMode } = context;
|
|
291
|
+
useEffect(() => {
|
|
292
|
+
if (!projectId || !pageId || !weaverseHost || isDesignMode) return;
|
|
293
|
+
let url = `${weaverseHost}/api/public/px`;
|
|
294
|
+
let img = new Image();
|
|
295
|
+
img.onload = () => img.remove();
|
|
296
|
+
img.src = `${url}?projectId=${projectId}&pageId=${pageId}`;
|
|
297
|
+
}, []);
|
|
298
|
+
}
|
|
299
|
+
var WeaverseHydrogenItem = class extends WeaverseItemStore {
|
|
300
|
+
constructor(initialData, weaverse) {
|
|
301
|
+
super(initialData, weaverse);
|
|
302
|
+
let { data, ...rest } = initialData;
|
|
303
|
+
if (!this.Element?.schema) {
|
|
304
|
+
console.error("Element is missing schema or not found!");
|
|
305
|
+
return;
|
|
306
|
+
}
|
|
307
|
+
let schemaData = generateDataFromSchema(this.Element.schema);
|
|
308
|
+
Object.assign(this._store, schemaData, data, rest);
|
|
309
|
+
}
|
|
310
|
+
get Element() {
|
|
311
|
+
return super.Element;
|
|
312
|
+
}
|
|
313
|
+
};
|
|
314
|
+
Weaverse.ItemConstructor = WeaverseHydrogenItem;
|
|
315
|
+
var WeaverseHydrogen = class extends Weaverse {
|
|
316
|
+
platformType = "shopify-hydrogen";
|
|
317
|
+
pageId;
|
|
318
|
+
internal;
|
|
319
|
+
requestInfo;
|
|
320
|
+
static itemInstances;
|
|
321
|
+
static elementRegistry;
|
|
322
|
+
constructor(params) {
|
|
323
|
+
let { internal, pageId, requestInfo, ...coreParams } = params;
|
|
324
|
+
super({ ...coreParams });
|
|
325
|
+
this.internal = internal;
|
|
326
|
+
this.pageId = pageId;
|
|
327
|
+
this.requestInfo = requestInfo;
|
|
328
|
+
}
|
|
329
|
+
};
|
|
330
|
+
function createWeaverseInstance(params) {
|
|
331
|
+
if (isBrowser) {
|
|
332
|
+
window.__weaverses = window.__weaverses || {};
|
|
333
|
+
let weaverse = window.__weaverses[params.pageId];
|
|
334
|
+
if (!weaverse || weaverse?.requestInfo?.pathname !== params.requestInfo.pathname || weaverse?.requestInfo?.search !== params.requestInfo.search) {
|
|
335
|
+
weaverse = new WeaverseHydrogen(params);
|
|
336
|
+
window.__weaverses[params.pageId] = weaverse;
|
|
337
|
+
}
|
|
338
|
+
if (weaverse?.isDesignMode) {
|
|
339
|
+
weaverse.requestInfo = params.requestInfo;
|
|
340
|
+
window.weaverseStudio?.refreshStudio(params);
|
|
341
|
+
}
|
|
342
|
+
return weaverse;
|
|
343
|
+
}
|
|
344
|
+
return new WeaverseHydrogen(params);
|
|
345
|
+
}
|
|
346
|
+
var StudioBridge = memo(({ context }) => {
|
|
347
|
+
useStudio(context);
|
|
348
|
+
return null;
|
|
349
|
+
});
|
|
350
|
+
function RenderRoot(props) {
|
|
351
|
+
let { data, components } = props;
|
|
352
|
+
for (let comp of [...components, ...defaultComponents]) {
|
|
353
|
+
comp?.schema?.type && registerComponent({
|
|
354
|
+
type: comp?.schema.type,
|
|
355
|
+
Component: comp.default,
|
|
356
|
+
schema: comp.schema,
|
|
357
|
+
loader: comp.loader
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
let { page, configs, project, pageAssignment } = data || {};
|
|
361
|
+
let weaverse = createWeaverseInstance({
|
|
362
|
+
...configs,
|
|
363
|
+
data: page,
|
|
364
|
+
pageId: page?.id,
|
|
365
|
+
internal: { project, pageAssignment }
|
|
366
|
+
});
|
|
367
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
368
|
+
/* @__PURE__ */ jsx(WeaverseRoot, { context: weaverse }),
|
|
369
|
+
/* @__PURE__ */ jsx(StudioBridge, { context: weaverse })
|
|
370
|
+
] });
|
|
371
|
+
}
|
|
372
|
+
function registerComponent(element) {
|
|
373
|
+
WeaverseHydrogen.registerElement(element);
|
|
374
|
+
}
|
|
375
|
+
var WeaverseHydrogenRoot = memo(
|
|
376
|
+
({
|
|
377
|
+
components,
|
|
378
|
+
errorComponent: ErrorComponent = ({ error }) => /* @__PURE__ */ jsx("div", { children: error?.message || "An unexpected error occurred" })
|
|
379
|
+
}) => {
|
|
380
|
+
let loaderData = useLoaderData();
|
|
381
|
+
let data = loaderData?.weaverseData;
|
|
382
|
+
if (data) {
|
|
383
|
+
if (data instanceof Promise) {
|
|
384
|
+
return /* @__PURE__ */ jsx(ErrorBoundary, { fallbackRender: ErrorComponent, children: /* @__PURE__ */ jsx(Suspense, { children: /* @__PURE__ */ jsx(Await, { resolve: data, children: (resolvedData) => /* @__PURE__ */ jsx(RenderRoot, { data: resolvedData, components }) }) }) });
|
|
385
|
+
}
|
|
386
|
+
return /* @__PURE__ */ jsx(RenderRoot, { data, components });
|
|
387
|
+
}
|
|
388
|
+
return /* @__PURE__ */ jsx(
|
|
389
|
+
ErrorComponent,
|
|
390
|
+
{
|
|
391
|
+
error: { message: "No Weaverse data return from route loader!" }
|
|
392
|
+
}
|
|
393
|
+
);
|
|
394
|
+
}
|
|
395
|
+
);
|
|
396
|
+
var ThemeSettingsProvider = createContext(null);
|
|
397
|
+
ThemeSettingsProvider.displayName = "WeaverseThemeSettingsProvider";
|
|
398
|
+
function withWeaverse(Component) {
|
|
399
|
+
return (props) => {
|
|
400
|
+
let { settings } = useThemeSettingsStore();
|
|
401
|
+
return /* @__PURE__ */ jsx(ThemeSettingsProvider.Provider, { value: settings, children: /* @__PURE__ */ jsx(Component, { ...props }) });
|
|
402
|
+
};
|
|
403
|
+
}
|
|
404
|
+
function useThemeSettings() {
|
|
405
|
+
let themeSettingsStore = useThemeSettingsStore();
|
|
406
|
+
let settings = useSafeExternalStore(
|
|
407
|
+
themeSettingsStore.subscribe,
|
|
408
|
+
themeSettingsStore.getSnapshot,
|
|
409
|
+
themeSettingsStore.getServerSnapshot
|
|
410
|
+
);
|
|
411
|
+
return settings;
|
|
412
|
+
}
|
|
137
413
|
var API_PATH = "api/public";
|
|
138
414
|
var DEFAULT_CACHE_STRATEGY = {
|
|
139
415
|
maxAge: 10,
|
|
@@ -382,222 +658,6 @@ var WeaverseClient = class {
|
|
|
382
658
|
};
|
|
383
659
|
};
|
|
384
660
|
|
|
385
|
-
// src/components/main.tsx
|
|
386
|
-
var main_exports = {};
|
|
387
|
-
__export(main_exports, {
|
|
388
|
-
default: () => main_default,
|
|
389
|
-
schema: () => schema
|
|
390
|
-
});
|
|
391
|
-
function Main(props) {
|
|
392
|
-
let { children, dangerouslySetInnerHTML, ...rest } = props;
|
|
393
|
-
return /* @__PURE__ */ jsx(
|
|
394
|
-
"div",
|
|
395
|
-
{
|
|
396
|
-
...rest,
|
|
397
|
-
children,
|
|
398
|
-
dangerouslySetInnerHTML: children ? void 0 : dangerouslySetInnerHTML
|
|
399
|
-
}
|
|
400
|
-
);
|
|
401
|
-
}
|
|
402
|
-
var main_default = Main;
|
|
403
|
-
var schema = {
|
|
404
|
-
type: "main",
|
|
405
|
-
title: "Main",
|
|
406
|
-
inspector: []
|
|
407
|
-
};
|
|
408
|
-
|
|
409
|
-
// src/components/index.ts
|
|
410
|
-
var defaultComponents = [main_exports];
|
|
411
|
-
var ThemeSettingsStore = class extends EventEmitter {
|
|
412
|
-
settings = {};
|
|
413
|
-
schema;
|
|
414
|
-
publicEnv;
|
|
415
|
-
constructor(data) {
|
|
416
|
-
super();
|
|
417
|
-
let { theme, schema: schema2, publicEnv } = data || {};
|
|
418
|
-
this.settings = { ...theme };
|
|
419
|
-
this.schema = schema2;
|
|
420
|
-
this.publicEnv = publicEnv;
|
|
421
|
-
if (isBrowser) {
|
|
422
|
-
window.__weaverseThemeSettingsStore = this;
|
|
423
|
-
}
|
|
424
|
-
}
|
|
425
|
-
updateThemeSettings = (newSettings) => {
|
|
426
|
-
this.settings = {
|
|
427
|
-
...this.settings,
|
|
428
|
-
...newSettings
|
|
429
|
-
};
|
|
430
|
-
this.emit(this.settings);
|
|
431
|
-
};
|
|
432
|
-
getSnapshot = () => {
|
|
433
|
-
return this.settings;
|
|
434
|
-
};
|
|
435
|
-
getServerSnapshot = () => {
|
|
436
|
-
return this.settings;
|
|
437
|
-
};
|
|
438
|
-
};
|
|
439
|
-
function useThemeSettingsStore() {
|
|
440
|
-
let data = useRouteLoaderData("root");
|
|
441
|
-
if (isBrowser && window.__weaverseThemeSettingsStore) {
|
|
442
|
-
return window.__weaverseThemeSettingsStore;
|
|
443
|
-
}
|
|
444
|
-
return new ThemeSettingsStore(data?.weaverseTheme);
|
|
445
|
-
}
|
|
446
|
-
|
|
447
|
-
// src/utils/use-studio.ts
|
|
448
|
-
function useStudio(weaverse) {
|
|
449
|
-
let { revalidate } = useRevalidator();
|
|
450
|
-
let navigation = useNavigation();
|
|
451
|
-
let { pathname, search } = useLocation();
|
|
452
|
-
let navigate = useNavigate();
|
|
453
|
-
let themeSettingsStore = useThemeSettingsStore();
|
|
454
|
-
let { isDesignMode, weaverseHost, weaverseVersion, isPreviewMode } = weaverse;
|
|
455
|
-
useEffect(() => {
|
|
456
|
-
if (navigation.state === "idle") {
|
|
457
|
-
if (isPreviewMode) {
|
|
458
|
-
let previewSrc = `${weaverseHost}/static/studio/hydrogen/preview.js?v=${weaverseVersion}`;
|
|
459
|
-
loadScript(previewSrc).catch(console.error);
|
|
460
|
-
} else if (isDesignMode) {
|
|
461
|
-
weaverse.internal = {
|
|
462
|
-
...weaverse.internal,
|
|
463
|
-
navigate,
|
|
464
|
-
revalidate,
|
|
465
|
-
themeSettingsStore
|
|
466
|
-
};
|
|
467
|
-
let studioSrc = `${weaverseHost}/static/studio/hydrogen/index.js?v=${weaverseVersion}`;
|
|
468
|
-
loadScript(studioSrc).then(() => {
|
|
469
|
-
window.weaverseStudio?.init(weaverse);
|
|
470
|
-
}).catch(console.error);
|
|
471
|
-
}
|
|
472
|
-
}
|
|
473
|
-
}, [pathname, search, navigation.state]);
|
|
474
|
-
usePixel(weaverse);
|
|
475
|
-
}
|
|
476
|
-
function usePixel(context) {
|
|
477
|
-
let { projectId, pageId, weaverseHost, isDesignMode } = context;
|
|
478
|
-
useEffect(() => {
|
|
479
|
-
if (!projectId || !pageId || !weaverseHost || isDesignMode) return;
|
|
480
|
-
let url = `${weaverseHost}/api/public/px`;
|
|
481
|
-
let img = new Image();
|
|
482
|
-
img.onload = () => img.remove();
|
|
483
|
-
img.src = `${url}?projectId=${projectId}&pageId=${pageId}`;
|
|
484
|
-
}, []);
|
|
485
|
-
}
|
|
486
|
-
var WeaverseHydrogenItem = class extends WeaverseItemStore {
|
|
487
|
-
constructor(initialData, weaverse) {
|
|
488
|
-
super(initialData, weaverse);
|
|
489
|
-
let { data, ...rest } = initialData;
|
|
490
|
-
if (!this.Element?.schema) {
|
|
491
|
-
console.error("Element is missing schema or not found!");
|
|
492
|
-
return;
|
|
493
|
-
}
|
|
494
|
-
let schemaData = generateDataFromSchema(this.Element.schema);
|
|
495
|
-
Object.assign(this._store, schemaData, data, rest);
|
|
496
|
-
}
|
|
497
|
-
get Element() {
|
|
498
|
-
return super.Element;
|
|
499
|
-
}
|
|
500
|
-
};
|
|
501
|
-
Weaverse.ItemConstructor = WeaverseHydrogenItem;
|
|
502
|
-
var WeaverseHydrogen = class extends Weaverse {
|
|
503
|
-
platformType = "shopify-hydrogen";
|
|
504
|
-
pageId;
|
|
505
|
-
internal;
|
|
506
|
-
requestInfo;
|
|
507
|
-
static itemInstances;
|
|
508
|
-
static elementRegistry;
|
|
509
|
-
constructor(params) {
|
|
510
|
-
let { internal, pageId, requestInfo, ...coreParams } = params;
|
|
511
|
-
super({ ...coreParams });
|
|
512
|
-
this.internal = internal;
|
|
513
|
-
this.pageId = pageId;
|
|
514
|
-
this.requestInfo = requestInfo;
|
|
515
|
-
}
|
|
516
|
-
};
|
|
517
|
-
function createWeaverseInstance(params) {
|
|
518
|
-
if (isBrowser) {
|
|
519
|
-
window.__weaverses = window.__weaverses || {};
|
|
520
|
-
let weaverse = window.__weaverses[params.pageId];
|
|
521
|
-
if (!weaverse || weaverse?.requestInfo?.pathname !== params.requestInfo.pathname || weaverse?.requestInfo?.search !== params.requestInfo.search) {
|
|
522
|
-
weaverse = new WeaverseHydrogen(params);
|
|
523
|
-
window.__weaverses[params.pageId] = weaverse;
|
|
524
|
-
}
|
|
525
|
-
if (weaverse?.isDesignMode) {
|
|
526
|
-
weaverse.requestInfo = params.requestInfo;
|
|
527
|
-
window.weaverseStudio?.refreshStudio(params);
|
|
528
|
-
}
|
|
529
|
-
return weaverse;
|
|
530
|
-
}
|
|
531
|
-
return new WeaverseHydrogen(params);
|
|
532
|
-
}
|
|
533
|
-
var StudioBridge = memo(({ context }) => {
|
|
534
|
-
useStudio(context);
|
|
535
|
-
return null;
|
|
536
|
-
});
|
|
537
|
-
function RenderRoot(props) {
|
|
538
|
-
let { data, components } = props;
|
|
539
|
-
for (let comp of [...components, ...defaultComponents]) {
|
|
540
|
-
comp?.schema?.type && registerComponent({
|
|
541
|
-
type: comp?.schema.type,
|
|
542
|
-
Component: comp.default,
|
|
543
|
-
schema: comp.schema,
|
|
544
|
-
loader: comp.loader
|
|
545
|
-
});
|
|
546
|
-
}
|
|
547
|
-
let { page, configs, project, pageAssignment } = data || {};
|
|
548
|
-
let weaverse = createWeaverseInstance({
|
|
549
|
-
...configs,
|
|
550
|
-
data: page,
|
|
551
|
-
pageId: page?.id,
|
|
552
|
-
internal: { project, pageAssignment }
|
|
553
|
-
});
|
|
554
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
555
|
-
/* @__PURE__ */ jsx(WeaverseRoot, { context: weaverse }),
|
|
556
|
-
/* @__PURE__ */ jsx(StudioBridge, { context: weaverse })
|
|
557
|
-
] });
|
|
558
|
-
}
|
|
559
|
-
function registerComponent(element) {
|
|
560
|
-
WeaverseHydrogen.registerElement(element);
|
|
561
|
-
}
|
|
562
|
-
var WeaverseHydrogenRoot = memo(
|
|
563
|
-
({
|
|
564
|
-
components,
|
|
565
|
-
errorComponent: ErrorComponent = ({ error }) => /* @__PURE__ */ jsx("div", { children: error?.message || "An unexpected error occurred" })
|
|
566
|
-
}) => {
|
|
567
|
-
let loaderData = useLoaderData();
|
|
568
|
-
let data = loaderData?.weaverseData;
|
|
569
|
-
if (data) {
|
|
570
|
-
if (data instanceof Promise) {
|
|
571
|
-
return /* @__PURE__ */ jsx(ErrorBoundary, { fallbackRender: ErrorComponent, children: /* @__PURE__ */ jsx(Suspense, { children: /* @__PURE__ */ jsx(Await, { resolve: data, children: (resolvedData) => /* @__PURE__ */ jsx(RenderRoot, { data: resolvedData, components }) }) }) });
|
|
572
|
-
}
|
|
573
|
-
return /* @__PURE__ */ jsx(RenderRoot, { data, components });
|
|
574
|
-
}
|
|
575
|
-
return /* @__PURE__ */ jsx(
|
|
576
|
-
ErrorComponent,
|
|
577
|
-
{
|
|
578
|
-
error: { message: "No Weaverse data return from route loader!" }
|
|
579
|
-
}
|
|
580
|
-
);
|
|
581
|
-
}
|
|
582
|
-
);
|
|
583
|
-
var ThemeSettingsProvider = createContext(null);
|
|
584
|
-
ThemeSettingsProvider.displayName = "WeaverseThemeSettingsProvider";
|
|
585
|
-
function withWeaverse(Component) {
|
|
586
|
-
return (props) => {
|
|
587
|
-
let { settings } = useThemeSettingsStore();
|
|
588
|
-
return /* @__PURE__ */ jsx(ThemeSettingsProvider.Provider, { value: settings, children: /* @__PURE__ */ jsx(Component, { ...props }) });
|
|
589
|
-
};
|
|
590
|
-
}
|
|
591
|
-
function useThemeSettings() {
|
|
592
|
-
let themeSettingsStore = useThemeSettingsStore();
|
|
593
|
-
let settings = useSafeExternalStore(
|
|
594
|
-
themeSettingsStore.subscribe,
|
|
595
|
-
themeSettingsStore.getSnapshot,
|
|
596
|
-
themeSettingsStore.getServerSnapshot
|
|
597
|
-
);
|
|
598
|
-
return settings;
|
|
599
|
-
}
|
|
600
|
-
|
|
601
661
|
// src/index.ts
|
|
602
662
|
function getSelectedProductOptions(request) {
|
|
603
663
|
let options = getSelectedProductOptions$1(request);
|