@weaverse/hydrogen 5.8.3 → 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 -30
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +73 -32
- 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;
|
|
@@ -55,7 +60,7 @@ declare function registerComponent(element: HydrogenElement): void;
|
|
|
55
60
|
declare const WeaverseHydrogenRoot: React$1.MemoExoticComponent<({ components, errorComponent: ErrorComponent, }: {
|
|
56
61
|
components: HydrogenComponent[];
|
|
57
62
|
errorComponent?: React.FC<{
|
|
58
|
-
error:
|
|
63
|
+
error: Error | unknown;
|
|
59
64
|
}>;
|
|
60
65
|
}) => react_jsx_runtime.JSX.Element>;
|
|
61
66
|
declare function withWeaverse(Component: ComponentType<any>): (props: JSX.IntrinsicAttributes) => react_jsx_runtime.JSX.Element;
|
|
@@ -162,7 +167,6 @@ declare class WeaverseClient {
|
|
|
162
167
|
* Includes 10-second timeout to prevent hanging requests.
|
|
163
168
|
*/
|
|
164
169
|
private readonly directFetch;
|
|
165
|
-
private isLocalhost;
|
|
166
170
|
private getApiUrl;
|
|
167
171
|
fetchWithCache: <T = unknown>(url: string, options?: RequestInit & {
|
|
168
172
|
strategy?: CachingStrategy;
|
|
@@ -182,10 +186,11 @@ interface RouteLoaderArgs extends LoaderFunctionArgs {
|
|
|
182
186
|
weaverse: WeaverseClient;
|
|
183
187
|
};
|
|
184
188
|
}
|
|
189
|
+
type ComponentDataValue = string | number | boolean | undefined | null;
|
|
185
190
|
interface HydrogenComponentData extends ElementData {
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
191
|
+
id: string;
|
|
192
|
+
type: string;
|
|
193
|
+
data?: Record<string, ComponentDataValue | Record<string, unknown>>;
|
|
189
194
|
children?: {
|
|
190
195
|
id: string;
|
|
191
196
|
}[];
|
|
@@ -564,11 +569,18 @@ type CreateHydrogenSchemaOptions = {
|
|
|
564
569
|
};
|
|
565
570
|
declare global {
|
|
566
571
|
interface Window {
|
|
567
|
-
__weaverse
|
|
568
|
-
__weaverses
|
|
569
|
-
__weaverseThemeSettingsStore
|
|
572
|
+
__weaverse?: WeaverseHydrogen;
|
|
573
|
+
__weaverses?: Record<string, WeaverseHydrogen>;
|
|
574
|
+
__weaverseThemeSettingsStore?: ThemeSettingsStore;
|
|
570
575
|
}
|
|
571
576
|
}
|
|
577
|
+
interface WeaverseStudio {
|
|
578
|
+
init: (weaverse: WeaverseHydrogen) => void;
|
|
579
|
+
refreshStudio: (params: WeaverseHydrogenParams) => void;
|
|
580
|
+
}
|
|
581
|
+
declare function hasWeaverseStudio(window: Window): window is Window & {
|
|
582
|
+
weaverseStudio: WeaverseStudio;
|
|
583
|
+
};
|
|
572
584
|
declare module '@shopify/remix-oxygen' {
|
|
573
585
|
interface AppLoadContext {
|
|
574
586
|
weaverse: WeaverseClient;
|
|
@@ -774,4 +786,4 @@ declare const IMAGES_PLACEHOLDERS: {
|
|
|
774
786
|
product_18: string;
|
|
775
787
|
};
|
|
776
788
|
|
|
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 };
|
|
789
|
+
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;
|
|
@@ -55,7 +60,7 @@ declare function registerComponent(element: HydrogenElement): void;
|
|
|
55
60
|
declare const WeaverseHydrogenRoot: React$1.MemoExoticComponent<({ components, errorComponent: ErrorComponent, }: {
|
|
56
61
|
components: HydrogenComponent[];
|
|
57
62
|
errorComponent?: React.FC<{
|
|
58
|
-
error:
|
|
63
|
+
error: Error | unknown;
|
|
59
64
|
}>;
|
|
60
65
|
}) => react_jsx_runtime.JSX.Element>;
|
|
61
66
|
declare function withWeaverse(Component: ComponentType<any>): (props: JSX.IntrinsicAttributes) => react_jsx_runtime.JSX.Element;
|
|
@@ -162,7 +167,6 @@ declare class WeaverseClient {
|
|
|
162
167
|
* Includes 10-second timeout to prevent hanging requests.
|
|
163
168
|
*/
|
|
164
169
|
private readonly directFetch;
|
|
165
|
-
private isLocalhost;
|
|
166
170
|
private getApiUrl;
|
|
167
171
|
fetchWithCache: <T = unknown>(url: string, options?: RequestInit & {
|
|
168
172
|
strategy?: CachingStrategy;
|
|
@@ -182,10 +186,11 @@ interface RouteLoaderArgs extends LoaderFunctionArgs {
|
|
|
182
186
|
weaverse: WeaverseClient;
|
|
183
187
|
};
|
|
184
188
|
}
|
|
189
|
+
type ComponentDataValue = string | number | boolean | undefined | null;
|
|
185
190
|
interface HydrogenComponentData extends ElementData {
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
191
|
+
id: string;
|
|
192
|
+
type: string;
|
|
193
|
+
data?: Record<string, ComponentDataValue | Record<string, unknown>>;
|
|
189
194
|
children?: {
|
|
190
195
|
id: string;
|
|
191
196
|
}[];
|
|
@@ -564,11 +569,18 @@ type CreateHydrogenSchemaOptions = {
|
|
|
564
569
|
};
|
|
565
570
|
declare global {
|
|
566
571
|
interface Window {
|
|
567
|
-
__weaverse
|
|
568
|
-
__weaverses
|
|
569
|
-
__weaverseThemeSettingsStore
|
|
572
|
+
__weaverse?: WeaverseHydrogen;
|
|
573
|
+
__weaverses?: Record<string, WeaverseHydrogen>;
|
|
574
|
+
__weaverseThemeSettingsStore?: ThemeSettingsStore;
|
|
570
575
|
}
|
|
571
576
|
}
|
|
577
|
+
interface WeaverseStudio {
|
|
578
|
+
init: (weaverse: WeaverseHydrogen) => void;
|
|
579
|
+
refreshStudio: (params: WeaverseHydrogenParams) => void;
|
|
580
|
+
}
|
|
581
|
+
declare function hasWeaverseStudio(window: Window): window is Window & {
|
|
582
|
+
weaverseStudio: WeaverseStudio;
|
|
583
|
+
};
|
|
572
584
|
declare module '@shopify/remix-oxygen' {
|
|
573
585
|
interface AppLoadContext {
|
|
574
586
|
weaverse: WeaverseClient;
|
|
@@ -774,4 +786,4 @@ declare const IMAGES_PLACEHOLDERS: {
|
|
|
774
786
|
product_18: string;
|
|
775
787
|
};
|
|
776
788
|
|
|
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 };
|
|
789
|
+
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();
|
|
@@ -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 react.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 (react.isBrowser && window.__weaverseThemeSettingsStore === this) {
|
|
356
|
+
window.__weaverseThemeSettingsStore = void 0;
|
|
357
|
+
}
|
|
358
|
+
};
|
|
318
359
|
};
|
|
319
360
|
function useThemeSettingsStore() {
|
|
320
|
-
|
|
361
|
+
const data = reactRouter.useRouteLoaderData("root");
|
|
321
362
|
if (react.isBrowser && window.__weaverseThemeSettingsStore) {
|
|
322
363
|
return window.__weaverseThemeSettingsStore;
|
|
323
364
|
}
|
|
@@ -332,9 +373,12 @@ function useStudio(weaverse) {
|
|
|
332
373
|
let navigate = reactRouter.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
|
react$1.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
|
react.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
|
react.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 react.WeaverseItemStore {
|
|
|
381
427
|
};
|
|
382
428
|
react.Weaverse.ItemConstructor = WeaverseHydrogenItem;
|
|
383
429
|
var WeaverseHydrogen = class extends react.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 = react$1.memo(
|
|
461
508
|
({
|
|
462
509
|
components,
|
|
463
|
-
errorComponent: ErrorComponent = ({ error }) => /* @__PURE__ */ jsxRuntime.jsx("div", { children: error
|
|
510
|
+
errorComponent: ErrorComponent = ({ error }) => /* @__PURE__ */ jsxRuntime.jsx("div", { children: error instanceof Error ? error.message : "An unexpected error occurred" })
|
|
464
511
|
}) => {
|
|
465
512
|
const matches = reactRouter.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}`;
|
|
@@ -1032,7 +1074,6 @@ var WeaverseClient = class {
|
|
|
1032
1074
|
if (hasError(projectData)) {
|
|
1033
1075
|
throw new Error(projectData.error);
|
|
1034
1076
|
}
|
|
1035
|
-
console.log("projectData", projectData);
|
|
1036
1077
|
let page;
|
|
1037
1078
|
let project;
|
|
1038
1079
|
let pageAssignment;
|
|
@@ -1208,6 +1249,7 @@ exports.getRequestQueries = getRequestQueries;
|
|
|
1208
1249
|
exports.getSelectedProductOptions = getSelectedProductOptions;
|
|
1209
1250
|
exports.getWeaverseConfigs = getWeaverseConfigs;
|
|
1210
1251
|
exports.hasError = hasError;
|
|
1252
|
+
exports.hasWeaverseStudio = hasWeaverseStudio;
|
|
1211
1253
|
exports.isFetchProjectPayload = isFetchProjectPayload;
|
|
1212
1254
|
exports.isProjectIdFunction = isProjectIdFunction;
|
|
1213
1255
|
exports.isThemeSettingsResponse = isThemeSettingsResponse;
|