@weaverse/hydrogen 5.8.4 → 5.8.5
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 +24 -12
- package/dist/index.d.ts +24 -12
- package/dist/index.js +72 -29
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +73 -31
- package/dist/index.mjs.map +1 -1
- package/package.json +11 -10
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createWithCache, CacheCustom, getSelectedProductOptions as getSelectedProductOptions$1 } from '@shopify/hydrogen';
|
|
2
|
-
import { Weaverse, WeaverseItemStore, loadScript, WeaverseRoot, isBrowser,
|
|
2
|
+
import { Weaverse, WeaverseItemStore, loadScript, WeaverseRoot, isBrowser, useSafeExternalStore } from '@weaverse/react';
|
|
3
3
|
export { isBrowser, isIframe, useChildInstances, useItemInstance, useParentInstance, useWeaverse } from '@weaverse/react';
|
|
4
4
|
import { createSchema, isValidSchema } from '@weaverse/schema';
|
|
5
5
|
export * from '@weaverse/schema';
|
|
@@ -8,18 +8,7 @@ import { useMatches, Await, useRevalidator, useNavigation, useLocation, useNavig
|
|
|
8
8
|
import { memo, useMemo, Suspense, createContext, useEffect } from 'react';
|
|
9
9
|
import { ErrorBoundary } from 'react-error-boundary';
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
var __export = (target, all) => {
|
|
13
|
-
for (var name in all)
|
|
14
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
// src/components/main.tsx
|
|
18
|
-
var main_exports = {};
|
|
19
|
-
__export(main_exports, {
|
|
20
|
-
default: () => main_default,
|
|
21
|
-
schema: () => schema
|
|
22
|
-
});
|
|
11
|
+
// src/index.ts
|
|
23
12
|
function Main(props) {
|
|
24
13
|
let { children, dangerouslySetInnerHTML, ...rest } = props;
|
|
25
14
|
return /* @__PURE__ */ jsx(
|
|
@@ -38,7 +27,12 @@ var schema = createSchema({
|
|
|
38
27
|
});
|
|
39
28
|
|
|
40
29
|
// src/components/index.ts
|
|
41
|
-
var defaultComponents = [
|
|
30
|
+
var defaultComponents = [
|
|
31
|
+
{
|
|
32
|
+
default: main_default,
|
|
33
|
+
schema
|
|
34
|
+
}
|
|
35
|
+
];
|
|
42
36
|
function createFlatDataContext(matches) {
|
|
43
37
|
const context = {};
|
|
44
38
|
for (const match of matches) {
|
|
@@ -92,6 +86,9 @@ function isThemeSettingsResponse(data) {
|
|
|
92
86
|
function isValidHydrogenSchema(schema2) {
|
|
93
87
|
return isValidSchema(schema2);
|
|
94
88
|
}
|
|
89
|
+
function hasWeaverseStudio(window2) {
|
|
90
|
+
return "weaverseStudio" in window2 && typeof window2.weaverseStudio === "object";
|
|
91
|
+
}
|
|
95
92
|
|
|
96
93
|
// src/utils/index.ts
|
|
97
94
|
var warnedTypes = /* @__PURE__ */ new Set();
|
|
@@ -292,13 +289,15 @@ function getPreviewData(type, components, weaverseHost) {
|
|
|
292
289
|
}
|
|
293
290
|
};
|
|
294
291
|
}
|
|
295
|
-
var ThemeSettingsStore = class
|
|
292
|
+
var ThemeSettingsStore = class {
|
|
296
293
|
settings = {};
|
|
297
294
|
schema;
|
|
298
295
|
publicEnv;
|
|
296
|
+
listeners = /* @__PURE__ */ new Set();
|
|
297
|
+
MAX_LISTENERS = 100;
|
|
298
|
+
isDestroyed = false;
|
|
299
299
|
constructor(data) {
|
|
300
|
-
|
|
301
|
-
let { theme, schema: schema2, publicEnv } = data || {};
|
|
300
|
+
const { theme, schema: schema2, publicEnv } = data || {};
|
|
302
301
|
this.settings = { ...theme };
|
|
303
302
|
this.schema = schema2;
|
|
304
303
|
this.publicEnv = publicEnv;
|
|
@@ -307,17 +306,59 @@ var ThemeSettingsStore = class extends EventEmitter {
|
|
|
307
306
|
}
|
|
308
307
|
}
|
|
309
308
|
updateThemeSettings = (newSettings) => {
|
|
309
|
+
if (this.isDestroyed) {
|
|
310
|
+
console.warn("ThemeSettingsStore: Cannot update destroyed store");
|
|
311
|
+
return;
|
|
312
|
+
}
|
|
310
313
|
this.settings = {
|
|
311
314
|
...this.settings,
|
|
312
315
|
...newSettings
|
|
313
316
|
};
|
|
314
|
-
this.emit(
|
|
317
|
+
this.emit();
|
|
315
318
|
};
|
|
316
319
|
getSnapshot = () => this.settings;
|
|
317
320
|
getServerSnapshot = () => this.settings;
|
|
321
|
+
subscribe = (callback) => {
|
|
322
|
+
if (this.isDestroyed) {
|
|
323
|
+
console.warn("ThemeSettingsStore: Cannot subscribe to destroyed store");
|
|
324
|
+
return () => {
|
|
325
|
+
};
|
|
326
|
+
}
|
|
327
|
+
if (this.listeners.size >= this.MAX_LISTENERS) {
|
|
328
|
+
console.warn(
|
|
329
|
+
`ThemeSettingsStore: Maximum listeners (${this.MAX_LISTENERS}) exceeded. Possible memory leak detected.`
|
|
330
|
+
);
|
|
331
|
+
return () => {
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
this.listeners.add(callback);
|
|
335
|
+
return () => {
|
|
336
|
+
this.listeners.delete(callback);
|
|
337
|
+
};
|
|
338
|
+
};
|
|
339
|
+
emit = () => {
|
|
340
|
+
if (this.isDestroyed) return;
|
|
341
|
+
const currentListeners = Array.from(this.listeners);
|
|
342
|
+
for (const listener of currentListeners) {
|
|
343
|
+
try {
|
|
344
|
+
listener();
|
|
345
|
+
} catch (error) {
|
|
346
|
+
console.error("ThemeSettingsStore: Listener error", error);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
};
|
|
350
|
+
// Method to properly clean up the store
|
|
351
|
+
destroy = () => {
|
|
352
|
+
if (this.isDestroyed) return;
|
|
353
|
+
this.listeners.clear();
|
|
354
|
+
this.isDestroyed = true;
|
|
355
|
+
if (isBrowser && window.__weaverseThemeSettingsStore === this) {
|
|
356
|
+
window.__weaverseThemeSettingsStore = void 0;
|
|
357
|
+
}
|
|
358
|
+
};
|
|
318
359
|
};
|
|
319
360
|
function useThemeSettingsStore() {
|
|
320
|
-
|
|
361
|
+
const data = useRouteLoaderData("root");
|
|
321
362
|
if (isBrowser && window.__weaverseThemeSettingsStore) {
|
|
322
363
|
return window.__weaverseThemeSettingsStore;
|
|
323
364
|
}
|
|
@@ -332,9 +373,12 @@ function useStudio(weaverse) {
|
|
|
332
373
|
let navigate = useNavigate();
|
|
333
374
|
let themeSettingsStore = useThemeSettingsStore();
|
|
334
375
|
let { isDesignMode, weaverseHost, weaverseVersion, isPreviewMode } = weaverse;
|
|
376
|
+
let searchParams = new URLSearchParams(search);
|
|
377
|
+
let revisionId = searchParams.get("__revisionId");
|
|
378
|
+
let isRevisionPreview = !!revisionId;
|
|
335
379
|
useEffect(() => {
|
|
336
380
|
if (navigation.state === "idle") {
|
|
337
|
-
if (isPreviewMode) {
|
|
381
|
+
if (isRevisionPreview || isPreviewMode) {
|
|
338
382
|
let previewSrc = `${weaverseHost}/static/studio/hydrogen/preview.js?v=${weaverseVersion}`;
|
|
339
383
|
loadScript(previewSrc).catch(console.error);
|
|
340
384
|
} else if (isDesignMode) {
|
|
@@ -346,7 +390,9 @@ function useStudio(weaverse) {
|
|
|
346
390
|
};
|
|
347
391
|
let studioSrc = `${weaverseHost}/static/studio/hydrogen/index.js?v=${weaverseVersion}`;
|
|
348
392
|
loadScript(studioSrc).then(() => {
|
|
349
|
-
window
|
|
393
|
+
if (hasWeaverseStudio(window)) {
|
|
394
|
+
window.weaverseStudio.init(weaverse);
|
|
395
|
+
}
|
|
350
396
|
}).catch(console.error);
|
|
351
397
|
}
|
|
352
398
|
}
|
|
@@ -381,7 +427,6 @@ var WeaverseHydrogenItem = class extends WeaverseItemStore {
|
|
|
381
427
|
};
|
|
382
428
|
Weaverse.ItemConstructor = WeaverseHydrogenItem;
|
|
383
429
|
var WeaverseHydrogen = class extends Weaverse {
|
|
384
|
-
platformType = "shopify-hydrogen";
|
|
385
430
|
pageId;
|
|
386
431
|
internal;
|
|
387
432
|
requestInfo;
|
|
@@ -421,7 +466,9 @@ function createWeaverseInstance(params) {
|
|
|
421
466
|
}
|
|
422
467
|
if (weaverse?.isDesignMode) {
|
|
423
468
|
weaverse.requestInfo = params.requestInfo;
|
|
424
|
-
window
|
|
469
|
+
if (hasWeaverseStudio(window)) {
|
|
470
|
+
window.weaverseStudio.refreshStudio(params);
|
|
471
|
+
}
|
|
425
472
|
}
|
|
426
473
|
return weaverse;
|
|
427
474
|
}
|
|
@@ -460,7 +507,7 @@ function registerComponent(element) {
|
|
|
460
507
|
var WeaverseHydrogenRoot = memo(
|
|
461
508
|
({
|
|
462
509
|
components,
|
|
463
|
-
errorComponent: ErrorComponent = ({ error }) => /* @__PURE__ */ jsx("div", { children: error
|
|
510
|
+
errorComponent: ErrorComponent = ({ error }) => /* @__PURE__ */ jsx("div", { children: error instanceof Error ? error.message : "An unexpected error occurred" })
|
|
464
511
|
}) => {
|
|
465
512
|
const matches = useMatches();
|
|
466
513
|
const enhancedDataContext = createWeaverseDataContext(matches);
|
|
@@ -849,13 +896,8 @@ var WeaverseClient = class {
|
|
|
849
896
|
}
|
|
850
897
|
}
|
|
851
898
|
};
|
|
852
|
-
// Helper method to detect if request is from localhost
|
|
853
|
-
isLocalhost() {
|
|
854
|
-
const hostname = this.parsedUrl.hostname;
|
|
855
|
-
return hostname === "localhost" || hostname === "127.0.0.1";
|
|
856
|
-
}
|
|
857
899
|
// Helper method for building API URLs consistently
|
|
858
|
-
getApiUrl(endpoint, useProxy = !
|
|
900
|
+
getApiUrl(endpoint, useProxy = !this.configs.isDesignMode) {
|
|
859
901
|
const { weaverseHost, weaverseApiBase, projectId } = this.configs;
|
|
860
902
|
if (useProxy) {
|
|
861
903
|
return `${weaverseApiBase}/v1/${endpoint}?projectId=${projectId}`;
|
|
@@ -1169,6 +1211,6 @@ var IMAGES_PLACEHOLDERS = {
|
|
|
1169
1211
|
product_18: "https://cdn.shopify.com/s/files/1/0838/0052/3057/files/fpo-product-watch-2-1024x1024.svg"
|
|
1170
1212
|
};
|
|
1171
1213
|
|
|
1172
|
-
export { IMAGES_PLACEHOLDERS, WeaverseClient, WeaverseError, WeaverseHydrogen, WeaverseHydrogenItem, WeaverseHydrogenRoot, createWeaverseDataContext, defaultComponents, generateDataFromSchema, getPreviewData, getRequestQueries, getSelectedProductOptions, getWeaverseConfigs, hasError, isFetchProjectPayload, isProjectIdFunction, isThemeSettingsResponse, isValidHydrogenSchema, isWithCacheFetchResponse, registerComponent, useThemeSettings, useWeaverseDataContext, withWeaverse };
|
|
1214
|
+
export { IMAGES_PLACEHOLDERS, WeaverseClient, WeaverseError, WeaverseHydrogen, WeaverseHydrogenItem, WeaverseHydrogenRoot, createWeaverseDataContext, defaultComponents, generateDataFromSchema, getPreviewData, getRequestQueries, getSelectedProductOptions, getWeaverseConfigs, hasError, hasWeaverseStudio, isFetchProjectPayload, isProjectIdFunction, isThemeSettingsResponse, isValidHydrogenSchema, isWithCacheFetchResponse, registerComponent, useThemeSettings, useWeaverseDataContext, withWeaverse };
|
|
1173
1215
|
//# sourceMappingURL=index.mjs.map
|
|
1174
1216
|
//# sourceMappingURL=index.mjs.map
|