@weaverse/hydrogen 1.2.2 → 1.3.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 +27 -36
- package/dist/index.d.ts +27 -36
- package/dist/index.js +48 -46
- package/dist/index.mjs +34 -31
- package/package.json +3 -3
package/dist/index.d.mts
CHANGED
|
@@ -8,6 +8,21 @@ import * as React from 'react';
|
|
|
8
8
|
import React__default, { ForwardRefExoticComponent } from 'react';
|
|
9
9
|
import * as _shopify_hydrogen_react_storefront_api_types from '@shopify/hydrogen-react/storefront-api-types';
|
|
10
10
|
|
|
11
|
+
declare class ThemeSettingsStore {
|
|
12
|
+
settings: HydrogenThemeSettings | null;
|
|
13
|
+
listeners: (() => void)[];
|
|
14
|
+
countries?: Localizations;
|
|
15
|
+
schema?: HydrogenThemeSchema;
|
|
16
|
+
publicEnv?: PublicEnv;
|
|
17
|
+
constructor(data: RootRouteData['weaverseTheme']);
|
|
18
|
+
updateThemeSettings: (newSettings: HydrogenThemeSettings) => void;
|
|
19
|
+
subscribe: (listener: () => void) => (() => void);
|
|
20
|
+
getSnapshot: () => HydrogenThemeSettings | null;
|
|
21
|
+
getServerSnapshot: () => HydrogenThemeSettings | null;
|
|
22
|
+
emitChange: () => void;
|
|
23
|
+
}
|
|
24
|
+
declare function useThemeSettings<T = HydrogenThemeSettings>(): T;
|
|
25
|
+
|
|
11
26
|
declare let STORE_PAGES: {
|
|
12
27
|
INDEX: string;
|
|
13
28
|
PRODUCT: string;
|
|
@@ -127,7 +142,7 @@ type WeaverseInternal = {
|
|
|
127
142
|
project: HydrogenProjectType;
|
|
128
143
|
navigate: NavigateFunction;
|
|
129
144
|
revalidate: () => void;
|
|
130
|
-
themeSettingsStore:
|
|
145
|
+
themeSettingsStore: ThemeSettingsStore;
|
|
131
146
|
};
|
|
132
147
|
type HydrogenComponentPresets = {
|
|
133
148
|
type: string;
|
|
@@ -238,18 +253,6 @@ type FetchProjectPayload = {
|
|
|
238
253
|
project: HydrogenProjectType;
|
|
239
254
|
pageAssignment: HydrogenPageAssignment;
|
|
240
255
|
};
|
|
241
|
-
type WeaverseThemeSettingsStore = {
|
|
242
|
-
updateThemeSettings(newSettings: HydrogenThemeSettings): void;
|
|
243
|
-
subscribe(listener: () => void): () => void;
|
|
244
|
-
getSnapshot(): HydrogenThemeSettings | null;
|
|
245
|
-
getServerSnapshot(): HydrogenThemeSettings | null;
|
|
246
|
-
settings: HydrogenThemeSettings | null;
|
|
247
|
-
listeners: (() => void)[];
|
|
248
|
-
emitChange(): void;
|
|
249
|
-
countries: Localizations;
|
|
250
|
-
schema: HydrogenThemeSchema;
|
|
251
|
-
publicEnv?: PublicEnv;
|
|
252
|
-
};
|
|
253
256
|
type HydrogenThemeEnv = {
|
|
254
257
|
WEAVERSE_PROJECT_ID: string;
|
|
255
258
|
WEAVERSE_HOST: string;
|
|
@@ -267,6 +270,15 @@ type WeaverseClientArgs = {
|
|
|
267
270
|
type FetchWithCacheOptions = RequestInit & {
|
|
268
271
|
strategy?: AllCacheOptions;
|
|
269
272
|
};
|
|
273
|
+
type RootRouteData = {
|
|
274
|
+
weaverseTheme?: {
|
|
275
|
+
theme: HydrogenThemeSettings;
|
|
276
|
+
countries?: Localizations;
|
|
277
|
+
schema?: HydrogenThemeSchema;
|
|
278
|
+
publicEnv?: PublicEnv;
|
|
279
|
+
};
|
|
280
|
+
[key: string]: any;
|
|
281
|
+
};
|
|
270
282
|
declare global {
|
|
271
283
|
interface Window {
|
|
272
284
|
__weaverse: WeaverseHydrogen;
|
|
@@ -293,27 +305,6 @@ declare class WeaverseClient {
|
|
|
293
305
|
}) => Promise<WeaverseLoaderData | null>;
|
|
294
306
|
execComponentLoader: (item: HydrogenComponentData, args: LoaderArgs) => Promise<HydrogenComponentData>;
|
|
295
307
|
}
|
|
296
|
-
declare function createWeaverseClient(args: WeaverseClientArgs): WeaverseClient;
|
|
297
|
-
|
|
298
|
-
declare class ThemeSettingsStore implements WeaverseThemeSettingsStore {
|
|
299
|
-
settings: HydrogenThemeSettings | null;
|
|
300
|
-
listeners: (() => void)[];
|
|
301
|
-
countries: Localizations;
|
|
302
|
-
schema: HydrogenThemeSchema;
|
|
303
|
-
publicEnv?: PublicEnv;
|
|
304
|
-
constructor({ theme, countries, schema, publicEnv, }: {
|
|
305
|
-
theme: HydrogenThemeSettings;
|
|
306
|
-
countries: Localizations;
|
|
307
|
-
schema: HydrogenThemeSchema;
|
|
308
|
-
publicEnv?: PublicEnv;
|
|
309
|
-
});
|
|
310
|
-
updateThemeSettings: (newSettings: HydrogenThemeSettings) => void;
|
|
311
|
-
subscribe: (listener: () => void) => (() => void);
|
|
312
|
-
getSnapshot: () => HydrogenThemeSettings | null;
|
|
313
|
-
getServerSnapshot: () => HydrogenThemeSettings | null;
|
|
314
|
-
emitChange: () => void;
|
|
315
|
-
}
|
|
316
|
-
declare function useThemeSettings<T = HydrogenThemeSettings>(): T;
|
|
317
308
|
|
|
318
309
|
declare function getRequestQueries<T = Record<string, string | boolean>>(request: Request): T;
|
|
319
310
|
declare function getWeaverseConfigs(request: Request, env: HydrogenThemeEnv): WeaverseProjectConfigs;
|
|
@@ -333,6 +324,6 @@ declare function createContentSecurityPolicy(request: Request, directives?: Reco
|
|
|
333
324
|
};
|
|
334
325
|
|
|
335
326
|
declare function WeaverseHydrogenRoot({ errorComponent: ErrorComponent, components, }: WeaverseHydrogenRootProps): React__default.JSX.Element;
|
|
336
|
-
declare let withWeaverse: (Component: React__default.ComponentType
|
|
327
|
+
declare let withWeaverse: (Component: React__default.ComponentType) => (props: React__default.JSX.IntrinsicAttributes) => React__default.JSX.Element;
|
|
337
328
|
|
|
338
|
-
export { AllCacheOptions, ComponentLoaderArgs, FetchProjectPayload, FetchProjectRequestBody, FetchWithCacheOptions, HydrogenComponent, HydrogenComponentData, HydrogenComponentInstance, HydrogenComponentLoaderFunction, HydrogenComponentPresets, HydrogenComponentProps, HydrogenComponentSchema, HydrogenElement, HydrogenPageAssignment, HydrogenPageConfigs, HydrogenPageData, HydrogenProjectConfig, HydrogenProjectType, HydrogenThemeEnv, HydrogenThemeInfo, HydrogenThemeSchema, HydrogenThemeSettings, HydrogenToolbarAction, I18nLocale, InspectorGroup, Locale, Localizations, PageLoadParams, PageType, PublicEnv, RouteLoaderArgs, ThemeSettingsStore, WeaverseClient, WeaverseClientArgs, WeaverseHydrogen, WeaverseHydrogenInit, WeaverseHydrogenRoot, WeaverseHydrogenRootProps, WeaverseInternal, WeaverseLoaderData, WeaverseLoaderRequestInfo, WeaverseProjectConfigs, WeaverseStorefrontData, WeaverseStudioQueries, WeaverseThemeConfigs,
|
|
329
|
+
export { AllCacheOptions, ComponentLoaderArgs, FetchProjectPayload, FetchProjectRequestBody, FetchWithCacheOptions, HydrogenComponent, HydrogenComponentData, HydrogenComponentInstance, HydrogenComponentLoaderFunction, HydrogenComponentPresets, HydrogenComponentProps, HydrogenComponentSchema, HydrogenElement, HydrogenPageAssignment, HydrogenPageConfigs, HydrogenPageData, HydrogenProjectConfig, HydrogenProjectType, HydrogenThemeEnv, HydrogenThemeInfo, HydrogenThemeSchema, HydrogenThemeSettings, HydrogenToolbarAction, I18nLocale, InspectorGroup, Locale, Localizations, PageLoadParams, PageType, PublicEnv, RootRouteData, RouteLoaderArgs, ThemeSettingsStore, WeaverseClient, WeaverseClientArgs, WeaverseHydrogen, WeaverseHydrogenInit, WeaverseHydrogenRoot, WeaverseHydrogenRootProps, WeaverseInternal, WeaverseLoaderData, WeaverseLoaderRequestInfo, WeaverseProjectConfigs, WeaverseStorefrontData, WeaverseStudioQueries, WeaverseThemeConfigs, createContentSecurityPolicy, getRequestQueries, getSelectedProductOptions, getWeaverseConfigs, getWeaverseCsp, useThemeSettings, withWeaverse };
|
package/dist/index.d.ts
CHANGED
|
@@ -8,6 +8,21 @@ import * as React from 'react';
|
|
|
8
8
|
import React__default, { ForwardRefExoticComponent } from 'react';
|
|
9
9
|
import * as _shopify_hydrogen_react_storefront_api_types from '@shopify/hydrogen-react/storefront-api-types';
|
|
10
10
|
|
|
11
|
+
declare class ThemeSettingsStore {
|
|
12
|
+
settings: HydrogenThemeSettings | null;
|
|
13
|
+
listeners: (() => void)[];
|
|
14
|
+
countries?: Localizations;
|
|
15
|
+
schema?: HydrogenThemeSchema;
|
|
16
|
+
publicEnv?: PublicEnv;
|
|
17
|
+
constructor(data: RootRouteData['weaverseTheme']);
|
|
18
|
+
updateThemeSettings: (newSettings: HydrogenThemeSettings) => void;
|
|
19
|
+
subscribe: (listener: () => void) => (() => void);
|
|
20
|
+
getSnapshot: () => HydrogenThemeSettings | null;
|
|
21
|
+
getServerSnapshot: () => HydrogenThemeSettings | null;
|
|
22
|
+
emitChange: () => void;
|
|
23
|
+
}
|
|
24
|
+
declare function useThemeSettings<T = HydrogenThemeSettings>(): T;
|
|
25
|
+
|
|
11
26
|
declare let STORE_PAGES: {
|
|
12
27
|
INDEX: string;
|
|
13
28
|
PRODUCT: string;
|
|
@@ -127,7 +142,7 @@ type WeaverseInternal = {
|
|
|
127
142
|
project: HydrogenProjectType;
|
|
128
143
|
navigate: NavigateFunction;
|
|
129
144
|
revalidate: () => void;
|
|
130
|
-
themeSettingsStore:
|
|
145
|
+
themeSettingsStore: ThemeSettingsStore;
|
|
131
146
|
};
|
|
132
147
|
type HydrogenComponentPresets = {
|
|
133
148
|
type: string;
|
|
@@ -238,18 +253,6 @@ type FetchProjectPayload = {
|
|
|
238
253
|
project: HydrogenProjectType;
|
|
239
254
|
pageAssignment: HydrogenPageAssignment;
|
|
240
255
|
};
|
|
241
|
-
type WeaverseThemeSettingsStore = {
|
|
242
|
-
updateThemeSettings(newSettings: HydrogenThemeSettings): void;
|
|
243
|
-
subscribe(listener: () => void): () => void;
|
|
244
|
-
getSnapshot(): HydrogenThemeSettings | null;
|
|
245
|
-
getServerSnapshot(): HydrogenThemeSettings | null;
|
|
246
|
-
settings: HydrogenThemeSettings | null;
|
|
247
|
-
listeners: (() => void)[];
|
|
248
|
-
emitChange(): void;
|
|
249
|
-
countries: Localizations;
|
|
250
|
-
schema: HydrogenThemeSchema;
|
|
251
|
-
publicEnv?: PublicEnv;
|
|
252
|
-
};
|
|
253
256
|
type HydrogenThemeEnv = {
|
|
254
257
|
WEAVERSE_PROJECT_ID: string;
|
|
255
258
|
WEAVERSE_HOST: string;
|
|
@@ -267,6 +270,15 @@ type WeaverseClientArgs = {
|
|
|
267
270
|
type FetchWithCacheOptions = RequestInit & {
|
|
268
271
|
strategy?: AllCacheOptions;
|
|
269
272
|
};
|
|
273
|
+
type RootRouteData = {
|
|
274
|
+
weaverseTheme?: {
|
|
275
|
+
theme: HydrogenThemeSettings;
|
|
276
|
+
countries?: Localizations;
|
|
277
|
+
schema?: HydrogenThemeSchema;
|
|
278
|
+
publicEnv?: PublicEnv;
|
|
279
|
+
};
|
|
280
|
+
[key: string]: any;
|
|
281
|
+
};
|
|
270
282
|
declare global {
|
|
271
283
|
interface Window {
|
|
272
284
|
__weaverse: WeaverseHydrogen;
|
|
@@ -293,27 +305,6 @@ declare class WeaverseClient {
|
|
|
293
305
|
}) => Promise<WeaverseLoaderData | null>;
|
|
294
306
|
execComponentLoader: (item: HydrogenComponentData, args: LoaderArgs) => Promise<HydrogenComponentData>;
|
|
295
307
|
}
|
|
296
|
-
declare function createWeaverseClient(args: WeaverseClientArgs): WeaverseClient;
|
|
297
|
-
|
|
298
|
-
declare class ThemeSettingsStore implements WeaverseThemeSettingsStore {
|
|
299
|
-
settings: HydrogenThemeSettings | null;
|
|
300
|
-
listeners: (() => void)[];
|
|
301
|
-
countries: Localizations;
|
|
302
|
-
schema: HydrogenThemeSchema;
|
|
303
|
-
publicEnv?: PublicEnv;
|
|
304
|
-
constructor({ theme, countries, schema, publicEnv, }: {
|
|
305
|
-
theme: HydrogenThemeSettings;
|
|
306
|
-
countries: Localizations;
|
|
307
|
-
schema: HydrogenThemeSchema;
|
|
308
|
-
publicEnv?: PublicEnv;
|
|
309
|
-
});
|
|
310
|
-
updateThemeSettings: (newSettings: HydrogenThemeSettings) => void;
|
|
311
|
-
subscribe: (listener: () => void) => (() => void);
|
|
312
|
-
getSnapshot: () => HydrogenThemeSettings | null;
|
|
313
|
-
getServerSnapshot: () => HydrogenThemeSettings | null;
|
|
314
|
-
emitChange: () => void;
|
|
315
|
-
}
|
|
316
|
-
declare function useThemeSettings<T = HydrogenThemeSettings>(): T;
|
|
317
308
|
|
|
318
309
|
declare function getRequestQueries<T = Record<string, string | boolean>>(request: Request): T;
|
|
319
310
|
declare function getWeaverseConfigs(request: Request, env: HydrogenThemeEnv): WeaverseProjectConfigs;
|
|
@@ -333,6 +324,6 @@ declare function createContentSecurityPolicy(request: Request, directives?: Reco
|
|
|
333
324
|
};
|
|
334
325
|
|
|
335
326
|
declare function WeaverseHydrogenRoot({ errorComponent: ErrorComponent, components, }: WeaverseHydrogenRootProps): React__default.JSX.Element;
|
|
336
|
-
declare let withWeaverse: (Component: React__default.ComponentType
|
|
327
|
+
declare let withWeaverse: (Component: React__default.ComponentType) => (props: React__default.JSX.IntrinsicAttributes) => React__default.JSX.Element;
|
|
337
328
|
|
|
338
|
-
export { AllCacheOptions, ComponentLoaderArgs, FetchProjectPayload, FetchProjectRequestBody, FetchWithCacheOptions, HydrogenComponent, HydrogenComponentData, HydrogenComponentInstance, HydrogenComponentLoaderFunction, HydrogenComponentPresets, HydrogenComponentProps, HydrogenComponentSchema, HydrogenElement, HydrogenPageAssignment, HydrogenPageConfigs, HydrogenPageData, HydrogenProjectConfig, HydrogenProjectType, HydrogenThemeEnv, HydrogenThemeInfo, HydrogenThemeSchema, HydrogenThemeSettings, HydrogenToolbarAction, I18nLocale, InspectorGroup, Locale, Localizations, PageLoadParams, PageType, PublicEnv, RouteLoaderArgs, ThemeSettingsStore, WeaverseClient, WeaverseClientArgs, WeaverseHydrogen, WeaverseHydrogenInit, WeaverseHydrogenRoot, WeaverseHydrogenRootProps, WeaverseInternal, WeaverseLoaderData, WeaverseLoaderRequestInfo, WeaverseProjectConfigs, WeaverseStorefrontData, WeaverseStudioQueries, WeaverseThemeConfigs,
|
|
329
|
+
export { AllCacheOptions, ComponentLoaderArgs, FetchProjectPayload, FetchProjectRequestBody, FetchWithCacheOptions, HydrogenComponent, HydrogenComponentData, HydrogenComponentInstance, HydrogenComponentLoaderFunction, HydrogenComponentPresets, HydrogenComponentProps, HydrogenComponentSchema, HydrogenElement, HydrogenPageAssignment, HydrogenPageConfigs, HydrogenPageData, HydrogenProjectConfig, HydrogenProjectType, HydrogenThemeEnv, HydrogenThemeInfo, HydrogenThemeSchema, HydrogenThemeSettings, HydrogenToolbarAction, I18nLocale, InspectorGroup, Locale, Localizations, PageLoadParams, PageType, PublicEnv, RootRouteData, RouteLoaderArgs, ThemeSettingsStore, WeaverseClient, WeaverseClientArgs, WeaverseHydrogen, WeaverseHydrogenInit, WeaverseHydrogenRoot, WeaverseHydrogenRootProps, WeaverseInternal, WeaverseLoaderData, WeaverseLoaderRequestInfo, WeaverseProjectConfigs, WeaverseStorefrontData, WeaverseStudioQueries, WeaverseThemeConfigs, createContentSecurityPolicy, getRequestQueries, getSelectedProductOptions, getWeaverseConfigs, getWeaverseCsp, useThemeSettings, withWeaverse };
|
package/dist/index.js
CHANGED
|
@@ -35,7 +35,6 @@ __export(src_exports, {
|
|
|
35
35
|
WeaverseClient: () => WeaverseClient,
|
|
36
36
|
WeaverseHydrogenRoot: () => WeaverseHydrogenRoot,
|
|
37
37
|
createContentSecurityPolicy: () => createContentSecurityPolicy,
|
|
38
|
-
createWeaverseClient: () => createWeaverseClient,
|
|
39
38
|
getRequestQueries: () => getRequestQueries,
|
|
40
39
|
getSelectedProductOptions: () => getSelectedProductOptions,
|
|
41
40
|
getWeaverseConfigs: () => getWeaverseConfigs,
|
|
@@ -51,7 +50,7 @@ var import_hydrogen = require("@shopify/hydrogen");
|
|
|
51
50
|
|
|
52
51
|
// package.json
|
|
53
52
|
var package_default = {
|
|
54
|
-
version: "1.
|
|
53
|
+
version: "1.3.1",
|
|
55
54
|
license: "MIT",
|
|
56
55
|
main: "dist/index.js",
|
|
57
56
|
typings: "dist/index.d.ts",
|
|
@@ -86,7 +85,7 @@ var package_default = {
|
|
|
86
85
|
dependencies: {
|
|
87
86
|
"@remix-run/react": "1.19.1",
|
|
88
87
|
"@shopify/hydrogen": "2023.7.8",
|
|
89
|
-
"@weaverse/react": "1.
|
|
88
|
+
"@weaverse/react": "1.3.1",
|
|
90
89
|
"react-error-boundary": "^4.0.11"
|
|
91
90
|
},
|
|
92
91
|
devDependencies: {
|
|
@@ -291,11 +290,11 @@ var WeaverseClient = class {
|
|
|
291
290
|
};
|
|
292
291
|
}
|
|
293
292
|
};
|
|
294
|
-
function createWeaverseClient(args) {
|
|
295
|
-
return new WeaverseClient(args);
|
|
296
|
-
}
|
|
297
293
|
|
|
298
294
|
// src/hooks/use-theme-settings.ts
|
|
295
|
+
var import_react4 = require("react");
|
|
296
|
+
|
|
297
|
+
// src/hooks/use-theme-context.ts
|
|
299
298
|
var import_react3 = require("react");
|
|
300
299
|
|
|
301
300
|
// src/context.ts
|
|
@@ -340,14 +339,20 @@ function createWeaverseInstance(weaverseData, components) {
|
|
|
340
339
|
var ThemeProvider = (0, import_react2.createContext)(null);
|
|
341
340
|
ThemeProvider.displayName = "WeaverseThemeProvider";
|
|
342
341
|
|
|
342
|
+
// src/hooks/use-theme-context.ts
|
|
343
|
+
function useThemeContext() {
|
|
344
|
+
let themeContext = (0, import_react3.useContext)(ThemeProvider);
|
|
345
|
+
if (!themeContext) {
|
|
346
|
+
throw new Error(
|
|
347
|
+
`useThemeContext must be used within a ThemeProvider. Make sure to wrap your app in the withWeaverse HoC.`
|
|
348
|
+
);
|
|
349
|
+
}
|
|
350
|
+
return themeContext;
|
|
351
|
+
}
|
|
352
|
+
|
|
343
353
|
// src/hooks/use-theme-settings.ts
|
|
344
354
|
var ThemeSettingsStore = class {
|
|
345
|
-
constructor({
|
|
346
|
-
theme,
|
|
347
|
-
countries,
|
|
348
|
-
schema,
|
|
349
|
-
publicEnv
|
|
350
|
-
}) {
|
|
355
|
+
constructor(data) {
|
|
351
356
|
this.settings = null;
|
|
352
357
|
this.listeners = [];
|
|
353
358
|
this.updateThemeSettings = (newSettings) => {
|
|
@@ -367,19 +372,20 @@ var ThemeSettingsStore = class {
|
|
|
367
372
|
return this.settings;
|
|
368
373
|
};
|
|
369
374
|
this.emitChange = () => {
|
|
370
|
-
for (
|
|
375
|
+
for (let listener of this.listeners) {
|
|
371
376
|
listener();
|
|
372
377
|
}
|
|
373
378
|
};
|
|
374
|
-
|
|
379
|
+
let { theme, countries, schema, publicEnv } = data || {};
|
|
380
|
+
this.settings = theme || null;
|
|
375
381
|
this.countries = countries;
|
|
376
382
|
this.schema = schema;
|
|
377
383
|
this.publicEnv = publicEnv;
|
|
378
384
|
}
|
|
379
385
|
};
|
|
380
386
|
function useThemeSettings() {
|
|
381
|
-
let themeSettingsStore = (
|
|
382
|
-
let settings = (0,
|
|
387
|
+
let themeSettingsStore = useThemeContext();
|
|
388
|
+
let settings = (0, import_react4.useSyncExternalStore)(
|
|
383
389
|
themeSettingsStore.subscribe,
|
|
384
390
|
themeSettingsStore.getSnapshot,
|
|
385
391
|
themeSettingsStore.getServerSnapshot
|
|
@@ -405,22 +411,22 @@ function createContentSecurityPolicy(request, directives) {
|
|
|
405
411
|
}
|
|
406
412
|
|
|
407
413
|
// src/WeaverseHydrogenRoot.tsx
|
|
408
|
-
var
|
|
409
|
-
var
|
|
410
|
-
var
|
|
414
|
+
var import_react8 = require("@remix-run/react");
|
|
415
|
+
var import_react9 = require("@weaverse/react");
|
|
416
|
+
var import_react10 = __toESM(require("react"));
|
|
411
417
|
var import_react_error_boundary = require("react-error-boundary");
|
|
412
418
|
|
|
413
419
|
// src/hooks/use-studio.ts
|
|
414
|
-
var
|
|
415
|
-
var
|
|
416
|
-
var
|
|
420
|
+
var import_react5 = require("@remix-run/react");
|
|
421
|
+
var import_react6 = require("@weaverse/react");
|
|
422
|
+
var import_react7 = require("react");
|
|
417
423
|
function useStudio(weaverse) {
|
|
418
|
-
let
|
|
419
|
-
let
|
|
420
|
-
let themeSettingsStore = (
|
|
424
|
+
let { revalidate } = (0, import_react5.useRevalidator)();
|
|
425
|
+
let navigate = (0, import_react5.useNavigate)();
|
|
426
|
+
let themeSettingsStore = useThemeContext();
|
|
421
427
|
let { isDesignMode, weaverseHost, weaverseVersion } = weaverse;
|
|
422
|
-
let isStudio =
|
|
423
|
-
(0,
|
|
428
|
+
let isStudio = import_react6.isIframe && isDesignMode && weaverseHost && weaverseVersion;
|
|
429
|
+
(0, import_react7.useEffect)(() => {
|
|
424
430
|
if (isStudio) {
|
|
425
431
|
weaverse.internal = {
|
|
426
432
|
...weaverse.internal,
|
|
@@ -433,7 +439,7 @@ function useStudio(weaverse) {
|
|
|
433
439
|
window.weaverseStudio.init(weaverse);
|
|
434
440
|
} else {
|
|
435
441
|
let studioSrc = `${weaverseHost}/assets/studio/hydrogen/index.js?v=${weaverseVersion}`;
|
|
436
|
-
(0,
|
|
442
|
+
(0, import_react6.loadScript)(studioSrc);
|
|
437
443
|
}
|
|
438
444
|
}
|
|
439
445
|
}, [weaverse]);
|
|
@@ -441,52 +447,48 @@ function useStudio(weaverse) {
|
|
|
441
447
|
|
|
442
448
|
// src/WeaverseHydrogenRoot.tsx
|
|
443
449
|
function WeaverseHydrogenRoot({
|
|
444
|
-
errorComponent: ErrorComponent,
|
|
450
|
+
errorComponent: ErrorComponent = FallbackError,
|
|
445
451
|
components
|
|
446
452
|
}) {
|
|
447
|
-
let loaderData = (0,
|
|
453
|
+
let loaderData = (0, import_react8.useLoaderData)();
|
|
448
454
|
let data = loaderData?.weaverseData;
|
|
449
455
|
if (data) {
|
|
450
456
|
if (data instanceof Promise) {
|
|
451
|
-
return /* @__PURE__ */
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
fallbackRender: ErrorComponent || (() => /* @__PURE__ */ import_react9.default.createElement(import_react9.default.Fragment, null, "An error occurred!"))
|
|
455
|
-
},
|
|
456
|
-
/* @__PURE__ */ import_react9.default.createElement(import_react9.Suspense, null, /* @__PURE__ */ import_react9.default.createElement(import_react7.Await, { resolve: data }, (resolvedData) => {
|
|
457
|
-
return /* @__PURE__ */ import_react9.default.createElement(RenderRoot, { data: resolvedData, components });
|
|
458
|
-
}))
|
|
459
|
-
);
|
|
457
|
+
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) => {
|
|
458
|
+
return /* @__PURE__ */ import_react10.default.createElement(RenderRoot, { data: resolvedData, components });
|
|
459
|
+
})));
|
|
460
460
|
}
|
|
461
|
-
return /* @__PURE__ */
|
|
461
|
+
return /* @__PURE__ */ import_react10.default.createElement(RenderRoot, { data, components });
|
|
462
462
|
}
|
|
463
|
-
return
|
|
463
|
+
return /* @__PURE__ */ import_react10.default.createElement(
|
|
464
464
|
ErrorComponent,
|
|
465
465
|
{
|
|
466
466
|
error: { message: "No Weaverse data return from route loader!" }
|
|
467
467
|
}
|
|
468
|
-
)
|
|
468
|
+
);
|
|
469
469
|
}
|
|
470
470
|
function RenderRoot(props) {
|
|
471
471
|
let { data, components } = props;
|
|
472
472
|
let weaverse = createWeaverseInstance(data, components);
|
|
473
473
|
useStudio(weaverse);
|
|
474
|
-
return /* @__PURE__ */
|
|
474
|
+
return /* @__PURE__ */ import_react10.default.createElement(import_react9.WeaverseRoot, { context: weaverse });
|
|
475
475
|
}
|
|
476
476
|
var withWeaverse = (Component) => {
|
|
477
477
|
return (props) => {
|
|
478
|
-
let { weaverseTheme } = (0,
|
|
478
|
+
let { weaverseTheme } = (0, import_react8.useLoaderData)();
|
|
479
479
|
let themeSettingsStore = new ThemeSettingsStore(weaverseTheme);
|
|
480
|
-
return /* @__PURE__ */
|
|
480
|
+
return /* @__PURE__ */ import_react10.default.createElement(ThemeProvider.Provider, { value: themeSettingsStore }, /* @__PURE__ */ import_react10.default.createElement(Component, { ...props }));
|
|
481
481
|
};
|
|
482
482
|
};
|
|
483
|
+
function FallbackError({ error }) {
|
|
484
|
+
return /* @__PURE__ */ import_react10.default.createElement("div", null, error?.message || "An unexpected error occurred");
|
|
485
|
+
}
|
|
483
486
|
// Annotate the CommonJS export names for ESM import in node:
|
|
484
487
|
0 && (module.exports = {
|
|
485
488
|
ThemeSettingsStore,
|
|
486
489
|
WeaverseClient,
|
|
487
490
|
WeaverseHydrogenRoot,
|
|
488
491
|
createContentSecurityPolicy,
|
|
489
|
-
createWeaverseClient,
|
|
490
492
|
getRequestQueries,
|
|
491
493
|
getSelectedProductOptions,
|
|
492
494
|
getWeaverseConfigs,
|
package/dist/index.mjs
CHANGED
|
@@ -6,7 +6,7 @@ import "@shopify/hydrogen";
|
|
|
6
6
|
|
|
7
7
|
// package.json
|
|
8
8
|
var package_default = {
|
|
9
|
-
version: "1.
|
|
9
|
+
version: "1.3.1",
|
|
10
10
|
license: "MIT",
|
|
11
11
|
main: "dist/index.js",
|
|
12
12
|
typings: "dist/index.d.ts",
|
|
@@ -41,7 +41,7 @@ var package_default = {
|
|
|
41
41
|
dependencies: {
|
|
42
42
|
"@remix-run/react": "1.19.1",
|
|
43
43
|
"@shopify/hydrogen": "2023.7.8",
|
|
44
|
-
"@weaverse/react": "1.
|
|
44
|
+
"@weaverse/react": "1.3.1",
|
|
45
45
|
"react-error-boundary": "^4.0.11"
|
|
46
46
|
},
|
|
47
47
|
devDependencies: {
|
|
@@ -246,12 +246,12 @@ var WeaverseClient = class {
|
|
|
246
246
|
};
|
|
247
247
|
}
|
|
248
248
|
};
|
|
249
|
-
function createWeaverseClient(args) {
|
|
250
|
-
return new WeaverseClient(args);
|
|
251
|
-
}
|
|
252
249
|
|
|
253
250
|
// src/hooks/use-theme-settings.ts
|
|
254
|
-
import {
|
|
251
|
+
import { useSyncExternalStore } from "react";
|
|
252
|
+
|
|
253
|
+
// src/hooks/use-theme-context.ts
|
|
254
|
+
import { useContext } from "react";
|
|
255
255
|
|
|
256
256
|
// src/context.ts
|
|
257
257
|
import { Weaverse, isBrowser } from "@weaverse/react";
|
|
@@ -295,14 +295,20 @@ function createWeaverseInstance(weaverseData, components) {
|
|
|
295
295
|
var ThemeProvider = createContext(null);
|
|
296
296
|
ThemeProvider.displayName = "WeaverseThemeProvider";
|
|
297
297
|
|
|
298
|
+
// src/hooks/use-theme-context.ts
|
|
299
|
+
function useThemeContext() {
|
|
300
|
+
let themeContext = useContext(ThemeProvider);
|
|
301
|
+
if (!themeContext) {
|
|
302
|
+
throw new Error(
|
|
303
|
+
`useThemeContext must be used within a ThemeProvider. Make sure to wrap your app in the withWeaverse HoC.`
|
|
304
|
+
);
|
|
305
|
+
}
|
|
306
|
+
return themeContext;
|
|
307
|
+
}
|
|
308
|
+
|
|
298
309
|
// src/hooks/use-theme-settings.ts
|
|
299
310
|
var ThemeSettingsStore = class {
|
|
300
|
-
constructor({
|
|
301
|
-
theme,
|
|
302
|
-
countries,
|
|
303
|
-
schema,
|
|
304
|
-
publicEnv
|
|
305
|
-
}) {
|
|
311
|
+
constructor(data) {
|
|
306
312
|
this.settings = null;
|
|
307
313
|
this.listeners = [];
|
|
308
314
|
this.updateThemeSettings = (newSettings) => {
|
|
@@ -322,18 +328,19 @@ var ThemeSettingsStore = class {
|
|
|
322
328
|
return this.settings;
|
|
323
329
|
};
|
|
324
330
|
this.emitChange = () => {
|
|
325
|
-
for (
|
|
331
|
+
for (let listener of this.listeners) {
|
|
326
332
|
listener();
|
|
327
333
|
}
|
|
328
334
|
};
|
|
329
|
-
|
|
335
|
+
let { theme, countries, schema, publicEnv } = data || {};
|
|
336
|
+
this.settings = theme || null;
|
|
330
337
|
this.countries = countries;
|
|
331
338
|
this.schema = schema;
|
|
332
339
|
this.publicEnv = publicEnv;
|
|
333
340
|
}
|
|
334
341
|
};
|
|
335
342
|
function useThemeSettings() {
|
|
336
|
-
let themeSettingsStore =
|
|
343
|
+
let themeSettingsStore = useThemeContext();
|
|
337
344
|
let settings = useSyncExternalStore(
|
|
338
345
|
themeSettingsStore.subscribe,
|
|
339
346
|
themeSettingsStore.getSnapshot,
|
|
@@ -368,11 +375,11 @@ import { ErrorBoundary } from "react-error-boundary";
|
|
|
368
375
|
// src/hooks/use-studio.ts
|
|
369
376
|
import { useNavigate, useRevalidator } from "@remix-run/react";
|
|
370
377
|
import { isIframe, loadScript } from "@weaverse/react";
|
|
371
|
-
import {
|
|
378
|
+
import { useEffect } from "react";
|
|
372
379
|
function useStudio(weaverse) {
|
|
373
|
-
let navigate = useNavigate();
|
|
374
380
|
let { revalidate } = useRevalidator();
|
|
375
|
-
let
|
|
381
|
+
let navigate = useNavigate();
|
|
382
|
+
let themeSettingsStore = useThemeContext();
|
|
376
383
|
let { isDesignMode, weaverseHost, weaverseVersion } = weaverse;
|
|
377
384
|
let isStudio = isIframe && isDesignMode && weaverseHost && weaverseVersion;
|
|
378
385
|
useEffect(() => {
|
|
@@ -396,31 +403,25 @@ function useStudio(weaverse) {
|
|
|
396
403
|
|
|
397
404
|
// src/WeaverseHydrogenRoot.tsx
|
|
398
405
|
function WeaverseHydrogenRoot({
|
|
399
|
-
errorComponent: ErrorComponent,
|
|
406
|
+
errorComponent: ErrorComponent = FallbackError,
|
|
400
407
|
components
|
|
401
408
|
}) {
|
|
402
409
|
let loaderData = useLoaderData();
|
|
403
410
|
let data = loaderData?.weaverseData;
|
|
404
411
|
if (data) {
|
|
405
412
|
if (data instanceof Promise) {
|
|
406
|
-
return /* @__PURE__ */ React.createElement(
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
fallbackRender: ErrorComponent || (() => /* @__PURE__ */ React.createElement(React.Fragment, null, "An error occurred!"))
|
|
410
|
-
},
|
|
411
|
-
/* @__PURE__ */ React.createElement(Suspense, null, /* @__PURE__ */ React.createElement(Await, { resolve: data }, (resolvedData) => {
|
|
412
|
-
return /* @__PURE__ */ React.createElement(RenderRoot, { data: resolvedData, components });
|
|
413
|
-
}))
|
|
414
|
-
);
|
|
413
|
+
return /* @__PURE__ */ React.createElement(ErrorBoundary, { fallbackRender: ErrorComponent }, /* @__PURE__ */ React.createElement(Suspense, null, /* @__PURE__ */ React.createElement(Await, { resolve: data }, (resolvedData) => {
|
|
414
|
+
return /* @__PURE__ */ React.createElement(RenderRoot, { data: resolvedData, components });
|
|
415
|
+
})));
|
|
415
416
|
}
|
|
416
417
|
return /* @__PURE__ */ React.createElement(RenderRoot, { data, components });
|
|
417
418
|
}
|
|
418
|
-
return
|
|
419
|
+
return /* @__PURE__ */ React.createElement(
|
|
419
420
|
ErrorComponent,
|
|
420
421
|
{
|
|
421
422
|
error: { message: "No Weaverse data return from route loader!" }
|
|
422
423
|
}
|
|
423
|
-
)
|
|
424
|
+
);
|
|
424
425
|
}
|
|
425
426
|
function RenderRoot(props) {
|
|
426
427
|
let { data, components } = props;
|
|
@@ -435,12 +436,14 @@ var withWeaverse = (Component) => {
|
|
|
435
436
|
return /* @__PURE__ */ React.createElement(ThemeProvider.Provider, { value: themeSettingsStore }, /* @__PURE__ */ React.createElement(Component, { ...props }));
|
|
436
437
|
};
|
|
437
438
|
};
|
|
439
|
+
function FallbackError({ error }) {
|
|
440
|
+
return /* @__PURE__ */ React.createElement("div", null, error?.message || "An unexpected error occurred");
|
|
441
|
+
}
|
|
438
442
|
export {
|
|
439
443
|
ThemeSettingsStore,
|
|
440
444
|
WeaverseClient,
|
|
441
445
|
WeaverseHydrogenRoot,
|
|
442
446
|
createContentSecurityPolicy,
|
|
443
|
-
createWeaverseClient,
|
|
444
447
|
getRequestQueries,
|
|
445
448
|
getSelectedProductOptions,
|
|
446
449
|
getWeaverseConfigs,
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.
|
|
2
|
+
"version": "1.3.1",
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"typings": "dist/index.d.ts",
|
|
@@ -34,10 +34,10 @@
|
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"@remix-run/react": "1.19.1",
|
|
36
36
|
"@shopify/hydrogen": "2023.7.8",
|
|
37
|
-
"@weaverse/react": "1.
|
|
37
|
+
"@weaverse/react": "1.3.1",
|
|
38
38
|
"react-error-boundary": "^4.0.11"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@shopify/remix-oxygen": "^1.1.4"
|
|
42
42
|
}
|
|
43
|
-
}
|
|
43
|
+
}
|