@weaverse/hydrogen 5.8.4 → 5.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 +27 -12
- package/dist/index.d.ts +27 -12
- package/dist/index.js +84 -31
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +85 -33
- package/dist/index.mjs.map +1 -1
- package/package.json +11 -10
package/dist/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SelectedOptionInput } from '@shopify/hydrogen/storefront-api-types';
|
|
2
|
-
import {
|
|
2
|
+
import { Weaverse, WeaverseItemStore, ElementData, WeaverseElement, WeaverseProjectDataType, WeaverseCoreParams, WeaverseResourcePickerData } from '@weaverse/react';
|
|
3
3
|
export { PositionInputValue, WeaverseImage, WeaverseVideo, isBrowser, isIframe, useChildInstances, useItemInstance, useParentInstance, useWeaverse } from '@weaverse/react';
|
|
4
4
|
import { PageType, InspectorGroup, SchemaType, ComponentPresets, SchemaValidationResult } from '@weaverse/schema';
|
|
5
5
|
export * from '@weaverse/schema';
|
|
@@ -17,14 +17,20 @@ type WeaverseThemeData = {
|
|
|
17
17
|
schema?: HydrogenThemeSchema;
|
|
18
18
|
publicEnv?: PublicEnv;
|
|
19
19
|
};
|
|
20
|
-
declare class ThemeSettingsStore
|
|
20
|
+
declare class ThemeSettingsStore {
|
|
21
21
|
settings: HydrogenThemeSettings;
|
|
22
22
|
schema?: HydrogenThemeSchema;
|
|
23
23
|
publicEnv?: PublicEnv;
|
|
24
|
+
private listeners;
|
|
25
|
+
private readonly MAX_LISTENERS;
|
|
26
|
+
private isDestroyed;
|
|
24
27
|
constructor(data: WeaverseThemeData);
|
|
25
28
|
updateThemeSettings: (newSettings: HydrogenThemeSettings) => void;
|
|
26
29
|
getSnapshot: () => HydrogenThemeSettings;
|
|
27
30
|
getServerSnapshot: () => HydrogenThemeSettings;
|
|
31
|
+
subscribe: (callback: () => void) => () => void;
|
|
32
|
+
private emit;
|
|
33
|
+
destroy: () => void;
|
|
28
34
|
}
|
|
29
35
|
|
|
30
36
|
declare class WeaverseHydrogenItem extends WeaverseItemStore {
|
|
@@ -33,7 +39,6 @@ declare class WeaverseHydrogenItem extends WeaverseItemStore {
|
|
|
33
39
|
get Element(): HydrogenElement;
|
|
34
40
|
}
|
|
35
41
|
declare class WeaverseHydrogen extends Weaverse {
|
|
36
|
-
platformType: PlatformTypeEnum;
|
|
37
42
|
pageId: string;
|
|
38
43
|
internal: Partial<WeaverseInternal>;
|
|
39
44
|
requestInfo: WeaverseLoaderRequestInfo;
|
|
@@ -44,6 +49,7 @@ declare class WeaverseHydrogen extends Weaverse {
|
|
|
44
49
|
weaverseVersion: string;
|
|
45
50
|
isDesignMode: boolean;
|
|
46
51
|
isPreviewMode: boolean;
|
|
52
|
+
isRevisionPreview: boolean;
|
|
47
53
|
sectionType: string;
|
|
48
54
|
ItemConstructor: typeof WeaverseHydrogenItem;
|
|
49
55
|
data: HydrogenPageData;
|
|
@@ -55,7 +61,7 @@ declare function registerComponent(element: HydrogenElement): void;
|
|
|
55
61
|
declare const WeaverseHydrogenRoot: React$1.MemoExoticComponent<({ components, errorComponent: ErrorComponent, }: {
|
|
56
62
|
components: HydrogenComponent[];
|
|
57
63
|
errorComponent?: React.FC<{
|
|
58
|
-
error:
|
|
64
|
+
error: Error | unknown;
|
|
59
65
|
}>;
|
|
60
66
|
}) => react_jsx_runtime.JSX.Element>;
|
|
61
67
|
declare function withWeaverse(Component: ComponentType<any>): (props: JSX.IntrinsicAttributes) => react_jsx_runtime.JSX.Element;
|
|
@@ -162,7 +168,6 @@ declare class WeaverseClient {
|
|
|
162
168
|
* Includes 10-second timeout to prevent hanging requests.
|
|
163
169
|
*/
|
|
164
170
|
private readonly directFetch;
|
|
165
|
-
private isLocalhost;
|
|
166
171
|
private getApiUrl;
|
|
167
172
|
fetchWithCache: <T = unknown>(url: string, options?: RequestInit & {
|
|
168
173
|
strategy?: CachingStrategy;
|
|
@@ -182,10 +187,11 @@ interface RouteLoaderArgs extends LoaderFunctionArgs {
|
|
|
182
187
|
weaverse: WeaverseClient;
|
|
183
188
|
};
|
|
184
189
|
}
|
|
190
|
+
type ComponentDataValue = string | number | boolean | undefined | null;
|
|
185
191
|
interface HydrogenComponentData extends ElementData {
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
192
|
+
id: string;
|
|
193
|
+
type: string;
|
|
194
|
+
data?: Record<string, ComponentDataValue | Record<string, unknown>>;
|
|
189
195
|
children?: {
|
|
190
196
|
id: string;
|
|
191
197
|
}[];
|
|
@@ -250,6 +256,7 @@ interface WeaverseHydrogenParams extends Omit<WeaverseCoreParams, 'ItemConstruct
|
|
|
250
256
|
weaverseVersion?: string;
|
|
251
257
|
isDesignMode?: boolean;
|
|
252
258
|
isPreviewMode?: boolean;
|
|
259
|
+
isRevisionPreview?: boolean;
|
|
253
260
|
sectionType?: string;
|
|
254
261
|
dataContext?: Record<string, unknown> | null;
|
|
255
262
|
}
|
|
@@ -280,6 +287,7 @@ type WeaverseProjectConfigs = {
|
|
|
280
287
|
weaverseVersion?: string;
|
|
281
288
|
isDesignMode?: boolean;
|
|
282
289
|
isPreviewMode?: boolean;
|
|
290
|
+
isRevisionPreview?: boolean;
|
|
283
291
|
sectionType?: string;
|
|
284
292
|
publicEnv?: PublicEnv;
|
|
285
293
|
};
|
|
@@ -564,11 +572,18 @@ type CreateHydrogenSchemaOptions = {
|
|
|
564
572
|
};
|
|
565
573
|
declare global {
|
|
566
574
|
interface Window {
|
|
567
|
-
__weaverse
|
|
568
|
-
__weaverses
|
|
569
|
-
__weaverseThemeSettingsStore
|
|
575
|
+
__weaverse?: WeaverseHydrogen;
|
|
576
|
+
__weaverses?: Record<string, WeaverseHydrogen>;
|
|
577
|
+
__weaverseThemeSettingsStore?: ThemeSettingsStore;
|
|
570
578
|
}
|
|
571
579
|
}
|
|
580
|
+
interface WeaverseStudio {
|
|
581
|
+
init: (weaverse: WeaverseHydrogen) => void;
|
|
582
|
+
refreshStudio: (params: WeaverseHydrogenParams) => void;
|
|
583
|
+
}
|
|
584
|
+
declare function hasWeaverseStudio(window: Window): window is Window & {
|
|
585
|
+
weaverseStudio: WeaverseStudio;
|
|
586
|
+
};
|
|
572
587
|
declare module '@shopify/remix-oxygen' {
|
|
573
588
|
interface AppLoadContext {
|
|
574
589
|
weaverse: WeaverseClient;
|
|
@@ -774,4 +789,4 @@ declare const IMAGES_PLACEHOLDERS: {
|
|
|
774
789
|
product_18: string;
|
|
775
790
|
};
|
|
776
791
|
|
|
777
|
-
export { type CacheResponseValidator, type ComponentLoaderArgs, type CreateHydrogenSchemaOptions, type DirectFetchResponse, type FetchProjectPayload, type FetchProjectRequestBody, type HydrogenComponent, type HydrogenComponentData, type HydrogenComponentPresets, type HydrogenComponentProps, type HydrogenComponentSchema, type HydrogenElement, type HydrogenPageAssignment, type HydrogenPageData, type HydrogenProjectType, type HydrogenSchemaValidationResult, type HydrogenThemeSchema, type HydrogenThemeSettings, IMAGES_PLACEHOLDERS, type LoadPageParams, type ProjectIdValidationResult, type ProjectIdValue, type PublicEnv, type RouteLoaderArgs, type ThemeSettingsResponse, type WeaverseArticle, type WeaverseBlog, WeaverseClient, type WeaverseClientArgs, type WeaverseCollection, type WeaverseDataContext, WeaverseError, WeaverseHydrogen, WeaverseHydrogenItem, type WeaverseHydrogenParams, WeaverseHydrogenRoot, type WeaverseI18n, type WeaverseInternal, type WeaverseLoaderData, type WeaverseLoaderRequestInfo, type WeaverseMetaObject, type WeaverseProduct, type WeaverseProjectConfigs, type WeaverseStudioQueries, type WithCacheFetchResponse, createWeaverseDataContext, defaultComponents, generateDataFromSchema, getPreviewData, getRequestQueries, getSelectedProductOptions, getWeaverseConfigs, hasError, isFetchProjectPayload, isProjectIdFunction, isThemeSettingsResponse, isValidHydrogenSchema, isWithCacheFetchResponse, registerComponent, useThemeSettings, useWeaverseDataContext, withWeaverse };
|
|
792
|
+
export { type CacheResponseValidator, type ComponentDataValue, type ComponentLoaderArgs, type CreateHydrogenSchemaOptions, type DirectFetchResponse, type FetchProjectPayload, type FetchProjectRequestBody, type HydrogenComponent, type HydrogenComponentData, type HydrogenComponentPresets, type HydrogenComponentProps, type HydrogenComponentSchema, type HydrogenElement, type HydrogenPageAssignment, type HydrogenPageData, type HydrogenProjectType, type HydrogenSchemaValidationResult, type HydrogenThemeSchema, type HydrogenThemeSettings, IMAGES_PLACEHOLDERS, type LoadPageParams, type ProjectIdValidationResult, type ProjectIdValue, type PublicEnv, type RouteLoaderArgs, type ThemeSettingsResponse, type WeaverseArticle, type WeaverseBlog, WeaverseClient, type WeaverseClientArgs, type WeaverseCollection, type WeaverseDataContext, WeaverseError, WeaverseHydrogen, WeaverseHydrogenItem, type WeaverseHydrogenParams, WeaverseHydrogenRoot, type WeaverseI18n, type WeaverseInternal, type WeaverseLoaderData, type WeaverseLoaderRequestInfo, type WeaverseMetaObject, type WeaverseProduct, type WeaverseProjectConfigs, type WeaverseStudioQueries, type WithCacheFetchResponse, createWeaverseDataContext, defaultComponents, generateDataFromSchema, getPreviewData, getRequestQueries, getSelectedProductOptions, getWeaverseConfigs, hasError, hasWeaverseStudio, isFetchProjectPayload, isProjectIdFunction, isThemeSettingsResponse, isValidHydrogenSchema, isWithCacheFetchResponse, registerComponent, useThemeSettings, useWeaverseDataContext, withWeaverse };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SelectedOptionInput } from '@shopify/hydrogen/storefront-api-types';
|
|
2
|
-
import {
|
|
2
|
+
import { Weaverse, WeaverseItemStore, ElementData, WeaverseElement, WeaverseProjectDataType, WeaverseCoreParams, WeaverseResourcePickerData } from '@weaverse/react';
|
|
3
3
|
export { PositionInputValue, WeaverseImage, WeaverseVideo, isBrowser, isIframe, useChildInstances, useItemInstance, useParentInstance, useWeaverse } from '@weaverse/react';
|
|
4
4
|
import { PageType, InspectorGroup, SchemaType, ComponentPresets, SchemaValidationResult } from '@weaverse/schema';
|
|
5
5
|
export * from '@weaverse/schema';
|
|
@@ -17,14 +17,20 @@ type WeaverseThemeData = {
|
|
|
17
17
|
schema?: HydrogenThemeSchema;
|
|
18
18
|
publicEnv?: PublicEnv;
|
|
19
19
|
};
|
|
20
|
-
declare class ThemeSettingsStore
|
|
20
|
+
declare class ThemeSettingsStore {
|
|
21
21
|
settings: HydrogenThemeSettings;
|
|
22
22
|
schema?: HydrogenThemeSchema;
|
|
23
23
|
publicEnv?: PublicEnv;
|
|
24
|
+
private listeners;
|
|
25
|
+
private readonly MAX_LISTENERS;
|
|
26
|
+
private isDestroyed;
|
|
24
27
|
constructor(data: WeaverseThemeData);
|
|
25
28
|
updateThemeSettings: (newSettings: HydrogenThemeSettings) => void;
|
|
26
29
|
getSnapshot: () => HydrogenThemeSettings;
|
|
27
30
|
getServerSnapshot: () => HydrogenThemeSettings;
|
|
31
|
+
subscribe: (callback: () => void) => () => void;
|
|
32
|
+
private emit;
|
|
33
|
+
destroy: () => void;
|
|
28
34
|
}
|
|
29
35
|
|
|
30
36
|
declare class WeaverseHydrogenItem extends WeaverseItemStore {
|
|
@@ -33,7 +39,6 @@ declare class WeaverseHydrogenItem extends WeaverseItemStore {
|
|
|
33
39
|
get Element(): HydrogenElement;
|
|
34
40
|
}
|
|
35
41
|
declare class WeaverseHydrogen extends Weaverse {
|
|
36
|
-
platformType: PlatformTypeEnum;
|
|
37
42
|
pageId: string;
|
|
38
43
|
internal: Partial<WeaverseInternal>;
|
|
39
44
|
requestInfo: WeaverseLoaderRequestInfo;
|
|
@@ -44,6 +49,7 @@ declare class WeaverseHydrogen extends Weaverse {
|
|
|
44
49
|
weaverseVersion: string;
|
|
45
50
|
isDesignMode: boolean;
|
|
46
51
|
isPreviewMode: boolean;
|
|
52
|
+
isRevisionPreview: boolean;
|
|
47
53
|
sectionType: string;
|
|
48
54
|
ItemConstructor: typeof WeaverseHydrogenItem;
|
|
49
55
|
data: HydrogenPageData;
|
|
@@ -55,7 +61,7 @@ declare function registerComponent(element: HydrogenElement): void;
|
|
|
55
61
|
declare const WeaverseHydrogenRoot: React$1.MemoExoticComponent<({ components, errorComponent: ErrorComponent, }: {
|
|
56
62
|
components: HydrogenComponent[];
|
|
57
63
|
errorComponent?: React.FC<{
|
|
58
|
-
error:
|
|
64
|
+
error: Error | unknown;
|
|
59
65
|
}>;
|
|
60
66
|
}) => react_jsx_runtime.JSX.Element>;
|
|
61
67
|
declare function withWeaverse(Component: ComponentType<any>): (props: JSX.IntrinsicAttributes) => react_jsx_runtime.JSX.Element;
|
|
@@ -162,7 +168,6 @@ declare class WeaverseClient {
|
|
|
162
168
|
* Includes 10-second timeout to prevent hanging requests.
|
|
163
169
|
*/
|
|
164
170
|
private readonly directFetch;
|
|
165
|
-
private isLocalhost;
|
|
166
171
|
private getApiUrl;
|
|
167
172
|
fetchWithCache: <T = unknown>(url: string, options?: RequestInit & {
|
|
168
173
|
strategy?: CachingStrategy;
|
|
@@ -182,10 +187,11 @@ interface RouteLoaderArgs extends LoaderFunctionArgs {
|
|
|
182
187
|
weaverse: WeaverseClient;
|
|
183
188
|
};
|
|
184
189
|
}
|
|
190
|
+
type ComponentDataValue = string | number | boolean | undefined | null;
|
|
185
191
|
interface HydrogenComponentData extends ElementData {
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
192
|
+
id: string;
|
|
193
|
+
type: string;
|
|
194
|
+
data?: Record<string, ComponentDataValue | Record<string, unknown>>;
|
|
189
195
|
children?: {
|
|
190
196
|
id: string;
|
|
191
197
|
}[];
|
|
@@ -250,6 +256,7 @@ interface WeaverseHydrogenParams extends Omit<WeaverseCoreParams, 'ItemConstruct
|
|
|
250
256
|
weaverseVersion?: string;
|
|
251
257
|
isDesignMode?: boolean;
|
|
252
258
|
isPreviewMode?: boolean;
|
|
259
|
+
isRevisionPreview?: boolean;
|
|
253
260
|
sectionType?: string;
|
|
254
261
|
dataContext?: Record<string, unknown> | null;
|
|
255
262
|
}
|
|
@@ -280,6 +287,7 @@ type WeaverseProjectConfigs = {
|
|
|
280
287
|
weaverseVersion?: string;
|
|
281
288
|
isDesignMode?: boolean;
|
|
282
289
|
isPreviewMode?: boolean;
|
|
290
|
+
isRevisionPreview?: boolean;
|
|
283
291
|
sectionType?: string;
|
|
284
292
|
publicEnv?: PublicEnv;
|
|
285
293
|
};
|
|
@@ -564,11 +572,18 @@ type CreateHydrogenSchemaOptions = {
|
|
|
564
572
|
};
|
|
565
573
|
declare global {
|
|
566
574
|
interface Window {
|
|
567
|
-
__weaverse
|
|
568
|
-
__weaverses
|
|
569
|
-
__weaverseThemeSettingsStore
|
|
575
|
+
__weaverse?: WeaverseHydrogen;
|
|
576
|
+
__weaverses?: Record<string, WeaverseHydrogen>;
|
|
577
|
+
__weaverseThemeSettingsStore?: ThemeSettingsStore;
|
|
570
578
|
}
|
|
571
579
|
}
|
|
580
|
+
interface WeaverseStudio {
|
|
581
|
+
init: (weaverse: WeaverseHydrogen) => void;
|
|
582
|
+
refreshStudio: (params: WeaverseHydrogenParams) => void;
|
|
583
|
+
}
|
|
584
|
+
declare function hasWeaverseStudio(window: Window): window is Window & {
|
|
585
|
+
weaverseStudio: WeaverseStudio;
|
|
586
|
+
};
|
|
572
587
|
declare module '@shopify/remix-oxygen' {
|
|
573
588
|
interface AppLoadContext {
|
|
574
589
|
weaverse: WeaverseClient;
|
|
@@ -774,4 +789,4 @@ declare const IMAGES_PLACEHOLDERS: {
|
|
|
774
789
|
product_18: string;
|
|
775
790
|
};
|
|
776
791
|
|
|
777
|
-
export { type CacheResponseValidator, type ComponentLoaderArgs, type CreateHydrogenSchemaOptions, type DirectFetchResponse, type FetchProjectPayload, type FetchProjectRequestBody, type HydrogenComponent, type HydrogenComponentData, type HydrogenComponentPresets, type HydrogenComponentProps, type HydrogenComponentSchema, type HydrogenElement, type HydrogenPageAssignment, type HydrogenPageData, type HydrogenProjectType, type HydrogenSchemaValidationResult, type HydrogenThemeSchema, type HydrogenThemeSettings, IMAGES_PLACEHOLDERS, type LoadPageParams, type ProjectIdValidationResult, type ProjectIdValue, type PublicEnv, type RouteLoaderArgs, type ThemeSettingsResponse, type WeaverseArticle, type WeaverseBlog, WeaverseClient, type WeaverseClientArgs, type WeaverseCollection, type WeaverseDataContext, WeaverseError, WeaverseHydrogen, WeaverseHydrogenItem, type WeaverseHydrogenParams, WeaverseHydrogenRoot, type WeaverseI18n, type WeaverseInternal, type WeaverseLoaderData, type WeaverseLoaderRequestInfo, type WeaverseMetaObject, type WeaverseProduct, type WeaverseProjectConfigs, type WeaverseStudioQueries, type WithCacheFetchResponse, createWeaverseDataContext, defaultComponents, generateDataFromSchema, getPreviewData, getRequestQueries, getSelectedProductOptions, getWeaverseConfigs, hasError, isFetchProjectPayload, isProjectIdFunction, isThemeSettingsResponse, isValidHydrogenSchema, isWithCacheFetchResponse, registerComponent, useThemeSettings, useWeaverseDataContext, withWeaverse };
|
|
792
|
+
export { type CacheResponseValidator, type ComponentDataValue, type ComponentLoaderArgs, type CreateHydrogenSchemaOptions, type DirectFetchResponse, type FetchProjectPayload, type FetchProjectRequestBody, type HydrogenComponent, type HydrogenComponentData, type HydrogenComponentPresets, type HydrogenComponentProps, type HydrogenComponentSchema, type HydrogenElement, type HydrogenPageAssignment, type HydrogenPageData, type HydrogenProjectType, type HydrogenSchemaValidationResult, type HydrogenThemeSchema, type HydrogenThemeSettings, IMAGES_PLACEHOLDERS, type LoadPageParams, type ProjectIdValidationResult, type ProjectIdValue, type PublicEnv, type RouteLoaderArgs, type ThemeSettingsResponse, type WeaverseArticle, type WeaverseBlog, WeaverseClient, type WeaverseClientArgs, type WeaverseCollection, type WeaverseDataContext, WeaverseError, WeaverseHydrogen, WeaverseHydrogenItem, type WeaverseHydrogenParams, WeaverseHydrogenRoot, type WeaverseI18n, type WeaverseInternal, type WeaverseLoaderData, type WeaverseLoaderRequestInfo, type WeaverseMetaObject, type WeaverseProduct, type WeaverseProjectConfigs, type WeaverseStudioQueries, type WithCacheFetchResponse, createWeaverseDataContext, defaultComponents, generateDataFromSchema, getPreviewData, getRequestQueries, getSelectedProductOptions, getWeaverseConfigs, hasError, hasWeaverseStudio, isFetchProjectPayload, isProjectIdFunction, isThemeSettingsResponse, isValidHydrogenSchema, isWithCacheFetchResponse, registerComponent, useThemeSettings, useWeaverseDataContext, withWeaverse };
|
package/dist/index.js
CHANGED
|
@@ -8,18 +8,7 @@ var reactRouter = require('react-router');
|
|
|
8
8
|
var react$1 = require('react');
|
|
9
9
|
var reactErrorBoundary = require('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__ */ jsxRuntime.jsx(
|
|
@@ -38,7 +27,12 @@ var schema = schema$1.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 schema$1.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();
|
|
@@ -153,6 +150,8 @@ function getWeaverseConfigs(request, env) {
|
|
|
153
150
|
weaverseVersion,
|
|
154
151
|
weaverseApiKey
|
|
155
152
|
} = queries;
|
|
153
|
+
let url = new URL(request.url);
|
|
154
|
+
let isRevisionPreview = url.searchParams.has("__revisionId");
|
|
156
155
|
return {
|
|
157
156
|
projectId: weaverseProjectId || WEAVERSE_PROJECT_ID || envFromProcess.WEAVERSE_PROJECT_ID || "",
|
|
158
157
|
weaverseHost: weaverseHost || WEAVERSE_HOST || envFromProcess.WEAVERSE_HOST || "https://studio.weaverse.io",
|
|
@@ -161,6 +160,7 @@ function getWeaverseConfigs(request, env) {
|
|
|
161
160
|
weaverseVersion: weaverseVersion || "",
|
|
162
161
|
isDesignMode,
|
|
163
162
|
isPreviewMode,
|
|
163
|
+
isRevisionPreview,
|
|
164
164
|
sectionType: sectionType || "",
|
|
165
165
|
publicEnv: {
|
|
166
166
|
PUBLIC_STORE_DOMAIN: PUBLIC_STORE_DOMAIN || "",
|
|
@@ -292,13 +292,15 @@ function getPreviewData(type, components, weaverseHost) {
|
|
|
292
292
|
}
|
|
293
293
|
};
|
|
294
294
|
}
|
|
295
|
-
var ThemeSettingsStore = class
|
|
295
|
+
var ThemeSettingsStore = class {
|
|
296
296
|
settings = {};
|
|
297
297
|
schema;
|
|
298
298
|
publicEnv;
|
|
299
|
+
listeners = /* @__PURE__ */ new Set();
|
|
300
|
+
MAX_LISTENERS = 100;
|
|
301
|
+
isDestroyed = false;
|
|
299
302
|
constructor(data) {
|
|
300
|
-
|
|
301
|
-
let { theme, schema: schema2, publicEnv } = data || {};
|
|
303
|
+
const { theme, schema: schema2, publicEnv } = data || {};
|
|
302
304
|
this.settings = { ...theme };
|
|
303
305
|
this.schema = schema2;
|
|
304
306
|
this.publicEnv = publicEnv;
|
|
@@ -307,17 +309,59 @@ var ThemeSettingsStore = class extends react.EventEmitter {
|
|
|
307
309
|
}
|
|
308
310
|
}
|
|
309
311
|
updateThemeSettings = (newSettings) => {
|
|
312
|
+
if (this.isDestroyed) {
|
|
313
|
+
console.warn("ThemeSettingsStore: Cannot update destroyed store");
|
|
314
|
+
return;
|
|
315
|
+
}
|
|
310
316
|
this.settings = {
|
|
311
317
|
...this.settings,
|
|
312
318
|
...newSettings
|
|
313
319
|
};
|
|
314
|
-
this.emit(
|
|
320
|
+
this.emit();
|
|
315
321
|
};
|
|
316
322
|
getSnapshot = () => this.settings;
|
|
317
323
|
getServerSnapshot = () => this.settings;
|
|
324
|
+
subscribe = (callback) => {
|
|
325
|
+
if (this.isDestroyed) {
|
|
326
|
+
console.warn("ThemeSettingsStore: Cannot subscribe to destroyed store");
|
|
327
|
+
return () => {
|
|
328
|
+
};
|
|
329
|
+
}
|
|
330
|
+
if (this.listeners.size >= this.MAX_LISTENERS) {
|
|
331
|
+
console.warn(
|
|
332
|
+
`ThemeSettingsStore: Maximum listeners (${this.MAX_LISTENERS}) exceeded. Possible memory leak detected.`
|
|
333
|
+
);
|
|
334
|
+
return () => {
|
|
335
|
+
};
|
|
336
|
+
}
|
|
337
|
+
this.listeners.add(callback);
|
|
338
|
+
return () => {
|
|
339
|
+
this.listeners.delete(callback);
|
|
340
|
+
};
|
|
341
|
+
};
|
|
342
|
+
emit = () => {
|
|
343
|
+
if (this.isDestroyed) return;
|
|
344
|
+
const currentListeners = Array.from(this.listeners);
|
|
345
|
+
for (const listener of currentListeners) {
|
|
346
|
+
try {
|
|
347
|
+
listener();
|
|
348
|
+
} catch (error) {
|
|
349
|
+
console.error("ThemeSettingsStore: Listener error", error);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
};
|
|
353
|
+
// Method to properly clean up the store
|
|
354
|
+
destroy = () => {
|
|
355
|
+
if (this.isDestroyed) return;
|
|
356
|
+
this.listeners.clear();
|
|
357
|
+
this.isDestroyed = true;
|
|
358
|
+
if (react.isBrowser && window.__weaverseThemeSettingsStore === this) {
|
|
359
|
+
window.__weaverseThemeSettingsStore = void 0;
|
|
360
|
+
}
|
|
361
|
+
};
|
|
318
362
|
};
|
|
319
363
|
function useThemeSettingsStore() {
|
|
320
|
-
|
|
364
|
+
const data = reactRouter.useRouteLoaderData("root");
|
|
321
365
|
if (react.isBrowser && window.__weaverseThemeSettingsStore) {
|
|
322
366
|
return window.__weaverseThemeSettingsStore;
|
|
323
367
|
}
|
|
@@ -331,10 +375,16 @@ function useStudio(weaverse) {
|
|
|
331
375
|
let { pathname, search } = reactRouter.useLocation();
|
|
332
376
|
let navigate = reactRouter.useNavigate();
|
|
333
377
|
let themeSettingsStore = useThemeSettingsStore();
|
|
334
|
-
let {
|
|
378
|
+
let {
|
|
379
|
+
isDesignMode,
|
|
380
|
+
weaverseHost,
|
|
381
|
+
weaverseVersion,
|
|
382
|
+
isPreviewMode,
|
|
383
|
+
isRevisionPreview
|
|
384
|
+
} = weaverse;
|
|
335
385
|
react$1.useEffect(() => {
|
|
336
386
|
if (navigation.state === "idle") {
|
|
337
|
-
if (isPreviewMode) {
|
|
387
|
+
if (isRevisionPreview || isPreviewMode) {
|
|
338
388
|
let previewSrc = `${weaverseHost}/static/studio/hydrogen/preview.js?v=${weaverseVersion}`;
|
|
339
389
|
react.loadScript(previewSrc).catch(console.error);
|
|
340
390
|
} else if (isDesignMode) {
|
|
@@ -346,7 +396,9 @@ function useStudio(weaverse) {
|
|
|
346
396
|
};
|
|
347
397
|
let studioSrc = `${weaverseHost}/static/studio/hydrogen/index.js?v=${weaverseVersion}`;
|
|
348
398
|
react.loadScript(studioSrc).then(() => {
|
|
349
|
-
window
|
|
399
|
+
if (hasWeaverseStudio(window)) {
|
|
400
|
+
window.weaverseStudio.init(weaverse);
|
|
401
|
+
}
|
|
350
402
|
}).catch(console.error);
|
|
351
403
|
}
|
|
352
404
|
}
|
|
@@ -381,7 +433,6 @@ var WeaverseHydrogenItem = class extends react.WeaverseItemStore {
|
|
|
381
433
|
};
|
|
382
434
|
react.Weaverse.ItemConstructor = WeaverseHydrogenItem;
|
|
383
435
|
var WeaverseHydrogen = class extends react.Weaverse {
|
|
384
|
-
platformType = "shopify-hydrogen";
|
|
385
436
|
pageId;
|
|
386
437
|
internal;
|
|
387
438
|
requestInfo;
|
|
@@ -392,6 +443,7 @@ var WeaverseHydrogen = class extends react.Weaverse {
|
|
|
392
443
|
weaverseVersion;
|
|
393
444
|
isDesignMode;
|
|
394
445
|
isPreviewMode;
|
|
446
|
+
isRevisionPreview;
|
|
395
447
|
sectionType;
|
|
396
448
|
static itemInstances;
|
|
397
449
|
static elementRegistry;
|
|
@@ -408,6 +460,7 @@ var WeaverseHydrogen = class extends react.Weaverse {
|
|
|
408
460
|
this.weaverseVersion = params.weaverseVersion || "";
|
|
409
461
|
this.isDesignMode = params.isDesignMode ?? false;
|
|
410
462
|
this.isPreviewMode = params.isPreviewMode ?? false;
|
|
463
|
+
this.isRevisionPreview = params.isRevisionPreview ?? false;
|
|
411
464
|
this.sectionType = params.sectionType || "";
|
|
412
465
|
}
|
|
413
466
|
};
|
|
@@ -421,7 +474,9 @@ function createWeaverseInstance(params) {
|
|
|
421
474
|
}
|
|
422
475
|
if (weaverse?.isDesignMode) {
|
|
423
476
|
weaverse.requestInfo = params.requestInfo;
|
|
424
|
-
window
|
|
477
|
+
if (hasWeaverseStudio(window)) {
|
|
478
|
+
window.weaverseStudio.refreshStudio(params);
|
|
479
|
+
}
|
|
425
480
|
}
|
|
426
481
|
return weaverse;
|
|
427
482
|
}
|
|
@@ -460,7 +515,7 @@ function registerComponent(element) {
|
|
|
460
515
|
var WeaverseHydrogenRoot = react$1.memo(
|
|
461
516
|
({
|
|
462
517
|
components,
|
|
463
|
-
errorComponent: ErrorComponent = ({ error }) => /* @__PURE__ */ jsxRuntime.jsx("div", { children: error
|
|
518
|
+
errorComponent: ErrorComponent = ({ error }) => /* @__PURE__ */ jsxRuntime.jsx("div", { children: error instanceof Error ? error.message : "An unexpected error occurred" })
|
|
464
519
|
}) => {
|
|
465
520
|
const matches = reactRouter.useMatches();
|
|
466
521
|
const enhancedDataContext = createWeaverseDataContext(matches);
|
|
@@ -615,7 +670,9 @@ var WeaverseClient = class {
|
|
|
615
670
|
weaverseApiBase: this.configs.weaverseApiBase,
|
|
616
671
|
weaverseApiKey: this.configs.weaverseApiKey,
|
|
617
672
|
weaverseVersion: this.configs.weaverseVersion,
|
|
618
|
-
isDesignMode: this.configs.isDesignMode
|
|
673
|
+
isDesignMode: this.configs.isDesignMode,
|
|
674
|
+
isPreviewMode: this.configs.isPreviewMode,
|
|
675
|
+
isRevisionPreview: this.configs.isRevisionPreview
|
|
619
676
|
};
|
|
620
677
|
this.basePageRequestBody = {
|
|
621
678
|
isDesignMode: this.configs.isDesignMode,
|
|
@@ -849,13 +906,8 @@ var WeaverseClient = class {
|
|
|
849
906
|
}
|
|
850
907
|
}
|
|
851
908
|
};
|
|
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
909
|
// Helper method for building API URLs consistently
|
|
858
|
-
getApiUrl(endpoint, useProxy = !
|
|
910
|
+
getApiUrl(endpoint, useProxy = !this.configs.isDesignMode) {
|
|
859
911
|
const { weaverseHost, weaverseApiBase, projectId } = this.configs;
|
|
860
912
|
if (useProxy) {
|
|
861
913
|
return `${weaverseApiBase}/v1/${endpoint}?projectId=${projectId}`;
|
|
@@ -1207,6 +1259,7 @@ exports.getRequestQueries = getRequestQueries;
|
|
|
1207
1259
|
exports.getSelectedProductOptions = getSelectedProductOptions;
|
|
1208
1260
|
exports.getWeaverseConfigs = getWeaverseConfigs;
|
|
1209
1261
|
exports.hasError = hasError;
|
|
1262
|
+
exports.hasWeaverseStudio = hasWeaverseStudio;
|
|
1210
1263
|
exports.isFetchProjectPayload = isFetchProjectPayload;
|
|
1211
1264
|
exports.isProjectIdFunction = isProjectIdFunction;
|
|
1212
1265
|
exports.isThemeSettingsResponse = isThemeSettingsResponse;
|