@weaverse/hydrogen 2.1.1 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +9 -6
- package/dist/index.d.ts +9 -6
- package/dist/index.js +75 -49
- package/dist/index.mjs +74 -48
- package/package.json +4 -4
package/dist/index.d.mts
CHANGED
|
@@ -8,7 +8,7 @@ import React, { ForwardRefExoticComponent } from 'react';
|
|
|
8
8
|
import * as _shopify_hydrogen_react_storefront_api_types from '@shopify/hydrogen-react/storefront-api-types';
|
|
9
9
|
|
|
10
10
|
declare class ThemeSettingsStore {
|
|
11
|
-
settings: HydrogenThemeSettings | null;
|
|
11
|
+
static settings: HydrogenThemeSettings | null;
|
|
12
12
|
listeners: (() => void)[];
|
|
13
13
|
countries?: Localizations;
|
|
14
14
|
schema?: HydrogenThemeSchema;
|
|
@@ -43,14 +43,16 @@ declare class WeaverseClient {
|
|
|
43
43
|
API: string;
|
|
44
44
|
clientVersion: string;
|
|
45
45
|
basePageConfigs: Omit<WeaverseProjectConfigs, 'requestInfo'>;
|
|
46
|
-
basePageRequestBody: Omit<FetchProjectRequestBody, 'url'>;
|
|
46
|
+
basePageRequestBody: Omit<FetchProjectRequestBody, 'url' | 'countries'>;
|
|
47
47
|
configs: WeaverseProjectConfigs;
|
|
48
|
+
withCache: ReturnType<typeof createWithCache>;
|
|
48
49
|
request: WeaverseClientArgs['request'];
|
|
49
50
|
storefront: WeaverseClientArgs['storefront'];
|
|
50
51
|
components: WeaverseClientArgs['components'];
|
|
51
52
|
themeSchema: WeaverseClientArgs['themeSchema'];
|
|
52
53
|
env: WeaverseClientArgs['env'];
|
|
53
|
-
|
|
54
|
+
cache: WeaverseClientArgs['cache'];
|
|
55
|
+
waitUntil: WeaverseClientArgs['waitUntil'];
|
|
54
56
|
countries?: WeaverseClientArgs['countries'];
|
|
55
57
|
constructor(args: WeaverseClientArgs);
|
|
56
58
|
fetchWithCache: <T>(url: string, options: FetchWithCacheOptions) => Promise<T>;
|
|
@@ -272,7 +274,8 @@ type HydrogenThemeEnv = {
|
|
|
272
274
|
};
|
|
273
275
|
type WeaverseClientArgs = {
|
|
274
276
|
request: Request;
|
|
275
|
-
|
|
277
|
+
cache: Cache;
|
|
278
|
+
waitUntil: ExecutionContext['waitUntil'];
|
|
276
279
|
env: HydrogenThemeEnv;
|
|
277
280
|
storefront: Storefront<I18nLocale>;
|
|
278
281
|
components: HydrogenComponent[];
|
|
@@ -298,7 +301,7 @@ declare global {
|
|
|
298
301
|
}
|
|
299
302
|
}
|
|
300
303
|
|
|
301
|
-
declare
|
|
304
|
+
declare let WeaverseHydrogenRoot: React.MemoExoticComponent<({ errorComponent: ErrorComponent, components, }: WeaverseHydrogenRootProps) => React.JSX.Element>;
|
|
302
305
|
declare function withWeaverse(Component: React.ComponentType): (props: React.JSX.IntrinsicAttributes) => React.JSX.Element;
|
|
303
306
|
|
|
304
307
|
declare function getRequestQueries<T = Record<string, string | boolean>>(request: Request): T;
|
|
@@ -321,7 +324,7 @@ declare class WeaverseHydrogen extends Weaverse {
|
|
|
321
324
|
}
|
|
322
325
|
declare class WeaverseHydrogenItem extends WeaverseItemStore {
|
|
323
326
|
weaverse: WeaverseHydrogen;
|
|
324
|
-
constructor(
|
|
327
|
+
constructor(initialData: HydrogenComponentData, weaverse: WeaverseHydrogen);
|
|
325
328
|
get Element(): HydrogenElement;
|
|
326
329
|
get data(): HydrogenComponentData;
|
|
327
330
|
set data(update: HydrogenComponentData);
|
package/dist/index.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ import React, { ForwardRefExoticComponent } from 'react';
|
|
|
8
8
|
import * as _shopify_hydrogen_react_storefront_api_types from '@shopify/hydrogen-react/storefront-api-types';
|
|
9
9
|
|
|
10
10
|
declare class ThemeSettingsStore {
|
|
11
|
-
settings: HydrogenThemeSettings | null;
|
|
11
|
+
static settings: HydrogenThemeSettings | null;
|
|
12
12
|
listeners: (() => void)[];
|
|
13
13
|
countries?: Localizations;
|
|
14
14
|
schema?: HydrogenThemeSchema;
|
|
@@ -43,14 +43,16 @@ declare class WeaverseClient {
|
|
|
43
43
|
API: string;
|
|
44
44
|
clientVersion: string;
|
|
45
45
|
basePageConfigs: Omit<WeaverseProjectConfigs, 'requestInfo'>;
|
|
46
|
-
basePageRequestBody: Omit<FetchProjectRequestBody, 'url'>;
|
|
46
|
+
basePageRequestBody: Omit<FetchProjectRequestBody, 'url' | 'countries'>;
|
|
47
47
|
configs: WeaverseProjectConfigs;
|
|
48
|
+
withCache: ReturnType<typeof createWithCache>;
|
|
48
49
|
request: WeaverseClientArgs['request'];
|
|
49
50
|
storefront: WeaverseClientArgs['storefront'];
|
|
50
51
|
components: WeaverseClientArgs['components'];
|
|
51
52
|
themeSchema: WeaverseClientArgs['themeSchema'];
|
|
52
53
|
env: WeaverseClientArgs['env'];
|
|
53
|
-
|
|
54
|
+
cache: WeaverseClientArgs['cache'];
|
|
55
|
+
waitUntil: WeaverseClientArgs['waitUntil'];
|
|
54
56
|
countries?: WeaverseClientArgs['countries'];
|
|
55
57
|
constructor(args: WeaverseClientArgs);
|
|
56
58
|
fetchWithCache: <T>(url: string, options: FetchWithCacheOptions) => Promise<T>;
|
|
@@ -272,7 +274,8 @@ type HydrogenThemeEnv = {
|
|
|
272
274
|
};
|
|
273
275
|
type WeaverseClientArgs = {
|
|
274
276
|
request: Request;
|
|
275
|
-
|
|
277
|
+
cache: Cache;
|
|
278
|
+
waitUntil: ExecutionContext['waitUntil'];
|
|
276
279
|
env: HydrogenThemeEnv;
|
|
277
280
|
storefront: Storefront<I18nLocale>;
|
|
278
281
|
components: HydrogenComponent[];
|
|
@@ -298,7 +301,7 @@ declare global {
|
|
|
298
301
|
}
|
|
299
302
|
}
|
|
300
303
|
|
|
301
|
-
declare
|
|
304
|
+
declare let WeaverseHydrogenRoot: React.MemoExoticComponent<({ errorComponent: ErrorComponent, components, }: WeaverseHydrogenRootProps) => React.JSX.Element>;
|
|
302
305
|
declare function withWeaverse(Component: React.ComponentType): (props: React.JSX.IntrinsicAttributes) => React.JSX.Element;
|
|
303
306
|
|
|
304
307
|
declare function getRequestQueries<T = Record<string, string | boolean>>(request: Request): T;
|
|
@@ -321,7 +324,7 @@ declare class WeaverseHydrogen extends Weaverse {
|
|
|
321
324
|
}
|
|
322
325
|
declare class WeaverseHydrogenItem extends WeaverseItemStore {
|
|
323
326
|
weaverse: WeaverseHydrogen;
|
|
324
|
-
constructor(
|
|
327
|
+
constructor(initialData: HydrogenComponentData, weaverse: WeaverseHydrogen);
|
|
325
328
|
get Element(): HydrogenElement;
|
|
326
329
|
get data(): HydrogenComponentData;
|
|
327
330
|
set data(update: HydrogenComponentData);
|
package/dist/index.js
CHANGED
|
@@ -58,13 +58,14 @@ function createCachedWeaverseInstance(params, components) {
|
|
|
58
58
|
window.__weaverses = window.__weaverses || [];
|
|
59
59
|
let weaverse = window.__weaverses.find((w) => {
|
|
60
60
|
let { pathname, search } = w.requestInfo;
|
|
61
|
-
|
|
62
|
-
return pathname === params.requestInfo.pathname && search === params.requestInfo.search && __cachedId === params.data.__cachedId;
|
|
61
|
+
return pathname === params.requestInfo.pathname;
|
|
63
62
|
});
|
|
64
63
|
if (!weaverse) {
|
|
65
64
|
weaverse = new WeaverseHydrogen(params, components);
|
|
66
65
|
window.__weaverses.push(weaverse);
|
|
67
|
-
|
|
66
|
+
} else if (weaverse.isDesignMode) {
|
|
67
|
+
weaverse.requestInfo = params.requestInfo;
|
|
68
|
+
weaverse.setProjectData(params.data);
|
|
68
69
|
}
|
|
69
70
|
return weaverse;
|
|
70
71
|
}
|
|
@@ -72,7 +73,7 @@ function createCachedWeaverseInstance(params, components) {
|
|
|
72
73
|
}
|
|
73
74
|
function createWeaverseInstance(weaverseData, components) {
|
|
74
75
|
let { page, configs, project, pageAssignment } = weaverseData || {};
|
|
75
|
-
|
|
76
|
+
return createCachedWeaverseInstance(
|
|
76
77
|
{
|
|
77
78
|
...configs,
|
|
78
79
|
data: page || {},
|
|
@@ -81,7 +82,6 @@ function createWeaverseInstance(weaverseData, components) {
|
|
|
81
82
|
},
|
|
82
83
|
components
|
|
83
84
|
);
|
|
84
|
-
return weaverse;
|
|
85
85
|
}
|
|
86
86
|
var ThemeProvider = (0, import_react2.createContext)(null);
|
|
87
87
|
ThemeProvider.displayName = "WeaverseThemeProvider";
|
|
@@ -126,26 +126,36 @@ function useStudio(weaverse) {
|
|
|
126
126
|
(0, import_react5.loadScript)(studioSrc);
|
|
127
127
|
}
|
|
128
128
|
}
|
|
129
|
-
}, [weaverse]);
|
|
129
|
+
}, [weaverse.requestInfo]);
|
|
130
130
|
}
|
|
131
131
|
|
|
132
132
|
// src/hooks/use-theme-settings.ts
|
|
133
133
|
var import_react7 = require("react");
|
|
134
|
-
var ThemeSettingsStore = class {
|
|
135
|
-
settings = null;
|
|
134
|
+
var ThemeSettingsStore = class _ThemeSettingsStore {
|
|
135
|
+
static settings = null;
|
|
136
136
|
listeners = [];
|
|
137
137
|
countries;
|
|
138
138
|
schema;
|
|
139
139
|
publicEnv;
|
|
140
140
|
constructor(data) {
|
|
141
141
|
let { theme, countries, schema, publicEnv } = data || {};
|
|
142
|
-
|
|
142
|
+
if (!_ThemeSettingsStore.settings) {
|
|
143
|
+
_ThemeSettingsStore.settings = theme || null;
|
|
144
|
+
} else {
|
|
145
|
+
_ThemeSettingsStore.settings = {
|
|
146
|
+
...theme,
|
|
147
|
+
..._ThemeSettingsStore.settings
|
|
148
|
+
};
|
|
149
|
+
}
|
|
143
150
|
this.countries = countries;
|
|
144
151
|
this.schema = schema;
|
|
145
152
|
this.publicEnv = publicEnv;
|
|
146
153
|
}
|
|
147
154
|
updateThemeSettings = (newSettings) => {
|
|
148
|
-
|
|
155
|
+
_ThemeSettingsStore.settings = {
|
|
156
|
+
..._ThemeSettingsStore.settings,
|
|
157
|
+
...newSettings
|
|
158
|
+
};
|
|
149
159
|
this.emitChange();
|
|
150
160
|
};
|
|
151
161
|
subscribe = (listener) => {
|
|
@@ -155,10 +165,10 @@ var ThemeSettingsStore = class {
|
|
|
155
165
|
};
|
|
156
166
|
};
|
|
157
167
|
getSnapshot = () => {
|
|
158
|
-
return
|
|
168
|
+
return _ThemeSettingsStore.settings;
|
|
159
169
|
};
|
|
160
170
|
getServerSnapshot = () => {
|
|
161
|
-
return
|
|
171
|
+
return _ThemeSettingsStore.settings;
|
|
162
172
|
};
|
|
163
173
|
emitChange = () => {
|
|
164
174
|
for (let listener of this.listeners) {
|
|
@@ -177,27 +187,29 @@ function useThemeSettings() {
|
|
|
177
187
|
}
|
|
178
188
|
|
|
179
189
|
// src/WeaverseHydrogenRoot.tsx
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
if (data
|
|
188
|
-
|
|
189
|
-
return /* @__PURE__ */ import_react10.default.createElement(
|
|
190
|
-
|
|
190
|
+
var WeaverseHydrogenRoot = (0, import_react10.memo)(
|
|
191
|
+
({
|
|
192
|
+
errorComponent: ErrorComponent = FallbackError,
|
|
193
|
+
components
|
|
194
|
+
}) => {
|
|
195
|
+
let loaderData = (0, import_react8.useLoaderData)();
|
|
196
|
+
let data = loaderData?.weaverseData;
|
|
197
|
+
if (data) {
|
|
198
|
+
if (data instanceof Promise) {
|
|
199
|
+
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) => {
|
|
200
|
+
return /* @__PURE__ */ import_react10.default.createElement(RenderRoot, { data: resolvedData, components });
|
|
201
|
+
})));
|
|
202
|
+
}
|
|
203
|
+
return /* @__PURE__ */ import_react10.default.createElement(RenderRoot, { data, components });
|
|
191
204
|
}
|
|
192
|
-
return /* @__PURE__ */ import_react10.default.createElement(
|
|
205
|
+
return /* @__PURE__ */ import_react10.default.createElement(
|
|
206
|
+
ErrorComponent,
|
|
207
|
+
{
|
|
208
|
+
error: { message: "No Weaverse data return from route loader!" }
|
|
209
|
+
}
|
|
210
|
+
);
|
|
193
211
|
}
|
|
194
|
-
|
|
195
|
-
ErrorComponent,
|
|
196
|
-
{
|
|
197
|
-
error: { message: "No Weaverse data return from route loader!" }
|
|
198
|
-
}
|
|
199
|
-
);
|
|
200
|
-
}
|
|
212
|
+
);
|
|
201
213
|
function RenderRoot(props) {
|
|
202
214
|
let { data, components } = props;
|
|
203
215
|
let weaverse = createWeaverseInstance(data, components);
|
|
@@ -215,9 +227,12 @@ function FallbackError({ error }) {
|
|
|
215
227
|
return /* @__PURE__ */ import_react10.default.createElement("div", null, error?.message || "An unexpected error occurred");
|
|
216
228
|
}
|
|
217
229
|
|
|
230
|
+
// src/weaverse-client.ts
|
|
231
|
+
var import_hydrogen = require("@shopify/hydrogen");
|
|
232
|
+
|
|
218
233
|
// package.json
|
|
219
234
|
var package_default = {
|
|
220
|
-
version: "2.
|
|
235
|
+
version: "2.2.0",
|
|
221
236
|
license: "MIT",
|
|
222
237
|
main: "dist/index.js",
|
|
223
238
|
typings: "dist/index.d.ts",
|
|
@@ -251,12 +266,12 @@ var package_default = {
|
|
|
251
266
|
author: "Weaverse Team",
|
|
252
267
|
dependencies: {
|
|
253
268
|
"@remix-run/react": "1.19.1",
|
|
254
|
-
"@shopify/hydrogen": "2023.7.
|
|
255
|
-
"@weaverse/react": "2.
|
|
269
|
+
"@shopify/hydrogen": "2023.7.10",
|
|
270
|
+
"@weaverse/react": "2.2.0",
|
|
256
271
|
"react-error-boundary": "^4.0.11"
|
|
257
272
|
},
|
|
258
273
|
devDependencies: {
|
|
259
|
-
"@shopify/remix-oxygen": "^1.1.
|
|
274
|
+
"@shopify/remix-oxygen": "^1.1.6"
|
|
260
275
|
}
|
|
261
276
|
};
|
|
262
277
|
|
|
@@ -299,12 +314,14 @@ var WeaverseClient = class {
|
|
|
299
314
|
basePageConfigs;
|
|
300
315
|
basePageRequestBody;
|
|
301
316
|
configs;
|
|
317
|
+
withCache;
|
|
302
318
|
request;
|
|
303
319
|
storefront;
|
|
304
320
|
components;
|
|
305
321
|
themeSchema;
|
|
306
322
|
env;
|
|
307
|
-
|
|
323
|
+
cache;
|
|
324
|
+
waitUntil;
|
|
308
325
|
countries;
|
|
309
326
|
constructor(args) {
|
|
310
327
|
let {
|
|
@@ -312,7 +329,8 @@ var WeaverseClient = class {
|
|
|
312
329
|
storefront,
|
|
313
330
|
components,
|
|
314
331
|
countries,
|
|
315
|
-
|
|
332
|
+
cache,
|
|
333
|
+
waitUntil,
|
|
316
334
|
themeSchema,
|
|
317
335
|
request
|
|
318
336
|
} = args;
|
|
@@ -321,8 +339,10 @@ var WeaverseClient = class {
|
|
|
321
339
|
this.components = components;
|
|
322
340
|
this.themeSchema = themeSchema;
|
|
323
341
|
this.env = env;
|
|
324
|
-
this.
|
|
342
|
+
this.cache = cache;
|
|
343
|
+
this.waitUntil = waitUntil;
|
|
325
344
|
this.countries = countries;
|
|
345
|
+
this.withCache = (0, import_hydrogen.createWithCache)({ cache, waitUntil });
|
|
326
346
|
this.configs = getWeaverseConfigs(request, env);
|
|
327
347
|
this.basePageConfigs = {
|
|
328
348
|
projectId: this.configs.projectId,
|
|
@@ -331,7 +351,6 @@ var WeaverseClient = class {
|
|
|
331
351
|
isDesignMode: this.configs.isDesignMode
|
|
332
352
|
};
|
|
333
353
|
this.basePageRequestBody = {
|
|
334
|
-
countries,
|
|
335
354
|
isDesignMode: this.configs.isDesignMode,
|
|
336
355
|
i18n: storefront.i18n,
|
|
337
356
|
projectId: this.configs.projectId
|
|
@@ -354,14 +373,21 @@ var WeaverseClient = class {
|
|
|
354
373
|
loadThemeSettings = async (strategy) => {
|
|
355
374
|
try {
|
|
356
375
|
let { API, configs } = this;
|
|
357
|
-
let { weaverseHost, projectId } = configs;
|
|
376
|
+
let { weaverseHost, projectId, isDesignMode } = configs;
|
|
358
377
|
if (!projectId) {
|
|
359
378
|
throw new Error("Missing Weaverse projectId!");
|
|
360
379
|
}
|
|
361
|
-
let res
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
380
|
+
let res;
|
|
381
|
+
if (isDesignMode) {
|
|
382
|
+
res = await fetch(`${weaverseHost}/${API}/${projectId}/configs`, {
|
|
383
|
+
method: "POST"
|
|
384
|
+
});
|
|
385
|
+
} else {
|
|
386
|
+
res = await this.fetchWithCache(
|
|
387
|
+
`${weaverseHost}/${API}/${projectId}/configs`,
|
|
388
|
+
{ method: "POST", strategy }
|
|
389
|
+
);
|
|
390
|
+
}
|
|
365
391
|
let data = res || {};
|
|
366
392
|
if (this.configs.isDesignMode) {
|
|
367
393
|
data = {
|
|
@@ -462,9 +488,9 @@ var WeaverseClient = class {
|
|
|
462
488
|
};
|
|
463
489
|
|
|
464
490
|
// src/wrappers.ts
|
|
465
|
-
var
|
|
491
|
+
var import_hydrogen2 = require("@shopify/hydrogen");
|
|
466
492
|
function getSelectedProductOptions(request) {
|
|
467
|
-
let options = (0,
|
|
493
|
+
let options = (0, import_hydrogen2.getSelectedProductOptions)(request);
|
|
468
494
|
return options.filter(
|
|
469
495
|
({ name }) => name !== "isDesignMode" && !name.startsWith("weaverse")
|
|
470
496
|
);
|
|
@@ -499,9 +525,9 @@ var WeaverseHydrogen = class extends import_react11.Weaverse {
|
|
|
499
525
|
}
|
|
500
526
|
};
|
|
501
527
|
var WeaverseHydrogenItem = class extends import_react11.WeaverseItemStore {
|
|
502
|
-
constructor(
|
|
503
|
-
super(
|
|
504
|
-
let { data, ...rest } =
|
|
528
|
+
constructor(initialData, weaverse) {
|
|
529
|
+
super(initialData, weaverse);
|
|
530
|
+
let { data, ...rest } = initialData;
|
|
505
531
|
this._store = { ...data, ...rest };
|
|
506
532
|
}
|
|
507
533
|
get Element() {
|
package/dist/index.mjs
CHANGED
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
// src/WeaverseHydrogenRoot.tsx
|
|
8
8
|
import { Await, useLoaderData } from "@remix-run/react";
|
|
9
9
|
import { WeaverseRoot } from "@weaverse/react";
|
|
10
|
-
import React, { Suspense } from "react";
|
|
10
|
+
import React, { memo, Suspense } from "react";
|
|
11
11
|
import { ErrorBoundary } from "react-error-boundary";
|
|
12
12
|
|
|
13
13
|
// src/context.ts
|
|
@@ -18,13 +18,14 @@ function createCachedWeaverseInstance(params, components) {
|
|
|
18
18
|
window.__weaverses = window.__weaverses || [];
|
|
19
19
|
let weaverse = window.__weaverses.find((w) => {
|
|
20
20
|
let { pathname, search } = w.requestInfo;
|
|
21
|
-
|
|
22
|
-
return pathname === params.requestInfo.pathname && search === params.requestInfo.search && __cachedId === params.data.__cachedId;
|
|
21
|
+
return pathname === params.requestInfo.pathname;
|
|
23
22
|
});
|
|
24
23
|
if (!weaverse) {
|
|
25
24
|
weaverse = new WeaverseHydrogen(params, components);
|
|
26
25
|
window.__weaverses.push(weaverse);
|
|
27
|
-
|
|
26
|
+
} else if (weaverse.isDesignMode) {
|
|
27
|
+
weaverse.requestInfo = params.requestInfo;
|
|
28
|
+
weaverse.setProjectData(params.data);
|
|
28
29
|
}
|
|
29
30
|
return weaverse;
|
|
30
31
|
}
|
|
@@ -32,7 +33,7 @@ function createCachedWeaverseInstance(params, components) {
|
|
|
32
33
|
}
|
|
33
34
|
function createWeaverseInstance(weaverseData, components) {
|
|
34
35
|
let { page, configs, project, pageAssignment } = weaverseData || {};
|
|
35
|
-
|
|
36
|
+
return createCachedWeaverseInstance(
|
|
36
37
|
{
|
|
37
38
|
...configs,
|
|
38
39
|
data: page || {},
|
|
@@ -41,7 +42,6 @@ function createWeaverseInstance(weaverseData, components) {
|
|
|
41
42
|
},
|
|
42
43
|
components
|
|
43
44
|
);
|
|
44
|
-
return weaverse;
|
|
45
45
|
}
|
|
46
46
|
var ThemeProvider = createContext(null);
|
|
47
47
|
ThemeProvider.displayName = "WeaverseThemeProvider";
|
|
@@ -86,26 +86,36 @@ function useStudio(weaverse) {
|
|
|
86
86
|
loadScript(studioSrc);
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
|
-
}, [weaverse]);
|
|
89
|
+
}, [weaverse.requestInfo]);
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
// src/hooks/use-theme-settings.ts
|
|
93
93
|
import { useSyncExternalStore } from "react";
|
|
94
|
-
var ThemeSettingsStore = class {
|
|
95
|
-
settings = null;
|
|
94
|
+
var ThemeSettingsStore = class _ThemeSettingsStore {
|
|
95
|
+
static settings = null;
|
|
96
96
|
listeners = [];
|
|
97
97
|
countries;
|
|
98
98
|
schema;
|
|
99
99
|
publicEnv;
|
|
100
100
|
constructor(data) {
|
|
101
101
|
let { theme, countries, schema, publicEnv } = data || {};
|
|
102
|
-
|
|
102
|
+
if (!_ThemeSettingsStore.settings) {
|
|
103
|
+
_ThemeSettingsStore.settings = theme || null;
|
|
104
|
+
} else {
|
|
105
|
+
_ThemeSettingsStore.settings = {
|
|
106
|
+
...theme,
|
|
107
|
+
..._ThemeSettingsStore.settings
|
|
108
|
+
};
|
|
109
|
+
}
|
|
103
110
|
this.countries = countries;
|
|
104
111
|
this.schema = schema;
|
|
105
112
|
this.publicEnv = publicEnv;
|
|
106
113
|
}
|
|
107
114
|
updateThemeSettings = (newSettings) => {
|
|
108
|
-
|
|
115
|
+
_ThemeSettingsStore.settings = {
|
|
116
|
+
..._ThemeSettingsStore.settings,
|
|
117
|
+
...newSettings
|
|
118
|
+
};
|
|
109
119
|
this.emitChange();
|
|
110
120
|
};
|
|
111
121
|
subscribe = (listener) => {
|
|
@@ -115,10 +125,10 @@ var ThemeSettingsStore = class {
|
|
|
115
125
|
};
|
|
116
126
|
};
|
|
117
127
|
getSnapshot = () => {
|
|
118
|
-
return
|
|
128
|
+
return _ThemeSettingsStore.settings;
|
|
119
129
|
};
|
|
120
130
|
getServerSnapshot = () => {
|
|
121
|
-
return
|
|
131
|
+
return _ThemeSettingsStore.settings;
|
|
122
132
|
};
|
|
123
133
|
emitChange = () => {
|
|
124
134
|
for (let listener of this.listeners) {
|
|
@@ -137,27 +147,29 @@ function useThemeSettings() {
|
|
|
137
147
|
}
|
|
138
148
|
|
|
139
149
|
// src/WeaverseHydrogenRoot.tsx
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
if (data
|
|
148
|
-
|
|
149
|
-
return /* @__PURE__ */ React.createElement(
|
|
150
|
-
|
|
150
|
+
var WeaverseHydrogenRoot = memo(
|
|
151
|
+
({
|
|
152
|
+
errorComponent: ErrorComponent = FallbackError,
|
|
153
|
+
components
|
|
154
|
+
}) => {
|
|
155
|
+
let loaderData = useLoaderData();
|
|
156
|
+
let data = loaderData?.weaverseData;
|
|
157
|
+
if (data) {
|
|
158
|
+
if (data instanceof Promise) {
|
|
159
|
+
return /* @__PURE__ */ React.createElement(ErrorBoundary, { fallbackRender: ErrorComponent }, /* @__PURE__ */ React.createElement(Suspense, null, /* @__PURE__ */ React.createElement(Await, { resolve: data }, (resolvedData) => {
|
|
160
|
+
return /* @__PURE__ */ React.createElement(RenderRoot, { data: resolvedData, components });
|
|
161
|
+
})));
|
|
162
|
+
}
|
|
163
|
+
return /* @__PURE__ */ React.createElement(RenderRoot, { data, components });
|
|
151
164
|
}
|
|
152
|
-
return /* @__PURE__ */ React.createElement(
|
|
165
|
+
return /* @__PURE__ */ React.createElement(
|
|
166
|
+
ErrorComponent,
|
|
167
|
+
{
|
|
168
|
+
error: { message: "No Weaverse data return from route loader!" }
|
|
169
|
+
}
|
|
170
|
+
);
|
|
153
171
|
}
|
|
154
|
-
|
|
155
|
-
ErrorComponent,
|
|
156
|
-
{
|
|
157
|
-
error: { message: "No Weaverse data return from route loader!" }
|
|
158
|
-
}
|
|
159
|
-
);
|
|
160
|
-
}
|
|
172
|
+
);
|
|
161
173
|
function RenderRoot(props) {
|
|
162
174
|
let { data, components } = props;
|
|
163
175
|
let weaverse = createWeaverseInstance(data, components);
|
|
@@ -175,9 +187,12 @@ function FallbackError({ error }) {
|
|
|
175
187
|
return /* @__PURE__ */ React.createElement("div", null, error?.message || "An unexpected error occurred");
|
|
176
188
|
}
|
|
177
189
|
|
|
190
|
+
// src/weaverse-client.ts
|
|
191
|
+
import { createWithCache } from "@shopify/hydrogen";
|
|
192
|
+
|
|
178
193
|
// package.json
|
|
179
194
|
var package_default = {
|
|
180
|
-
version: "2.
|
|
195
|
+
version: "2.2.0",
|
|
181
196
|
license: "MIT",
|
|
182
197
|
main: "dist/index.js",
|
|
183
198
|
typings: "dist/index.d.ts",
|
|
@@ -211,12 +226,12 @@ var package_default = {
|
|
|
211
226
|
author: "Weaverse Team",
|
|
212
227
|
dependencies: {
|
|
213
228
|
"@remix-run/react": "1.19.1",
|
|
214
|
-
"@shopify/hydrogen": "2023.7.
|
|
215
|
-
"@weaverse/react": "2.
|
|
229
|
+
"@shopify/hydrogen": "2023.7.10",
|
|
230
|
+
"@weaverse/react": "2.2.0",
|
|
216
231
|
"react-error-boundary": "^4.0.11"
|
|
217
232
|
},
|
|
218
233
|
devDependencies: {
|
|
219
|
-
"@shopify/remix-oxygen": "^1.1.
|
|
234
|
+
"@shopify/remix-oxygen": "^1.1.6"
|
|
220
235
|
}
|
|
221
236
|
};
|
|
222
237
|
|
|
@@ -259,12 +274,14 @@ var WeaverseClient = class {
|
|
|
259
274
|
basePageConfigs;
|
|
260
275
|
basePageRequestBody;
|
|
261
276
|
configs;
|
|
277
|
+
withCache;
|
|
262
278
|
request;
|
|
263
279
|
storefront;
|
|
264
280
|
components;
|
|
265
281
|
themeSchema;
|
|
266
282
|
env;
|
|
267
|
-
|
|
283
|
+
cache;
|
|
284
|
+
waitUntil;
|
|
268
285
|
countries;
|
|
269
286
|
constructor(args) {
|
|
270
287
|
let {
|
|
@@ -272,7 +289,8 @@ var WeaverseClient = class {
|
|
|
272
289
|
storefront,
|
|
273
290
|
components,
|
|
274
291
|
countries,
|
|
275
|
-
|
|
292
|
+
cache,
|
|
293
|
+
waitUntil,
|
|
276
294
|
themeSchema,
|
|
277
295
|
request
|
|
278
296
|
} = args;
|
|
@@ -281,8 +299,10 @@ var WeaverseClient = class {
|
|
|
281
299
|
this.components = components;
|
|
282
300
|
this.themeSchema = themeSchema;
|
|
283
301
|
this.env = env;
|
|
284
|
-
this.
|
|
302
|
+
this.cache = cache;
|
|
303
|
+
this.waitUntil = waitUntil;
|
|
285
304
|
this.countries = countries;
|
|
305
|
+
this.withCache = createWithCache({ cache, waitUntil });
|
|
286
306
|
this.configs = getWeaverseConfigs(request, env);
|
|
287
307
|
this.basePageConfigs = {
|
|
288
308
|
projectId: this.configs.projectId,
|
|
@@ -291,7 +311,6 @@ var WeaverseClient = class {
|
|
|
291
311
|
isDesignMode: this.configs.isDesignMode
|
|
292
312
|
};
|
|
293
313
|
this.basePageRequestBody = {
|
|
294
|
-
countries,
|
|
295
314
|
isDesignMode: this.configs.isDesignMode,
|
|
296
315
|
i18n: storefront.i18n,
|
|
297
316
|
projectId: this.configs.projectId
|
|
@@ -314,14 +333,21 @@ var WeaverseClient = class {
|
|
|
314
333
|
loadThemeSettings = async (strategy) => {
|
|
315
334
|
try {
|
|
316
335
|
let { API, configs } = this;
|
|
317
|
-
let { weaverseHost, projectId } = configs;
|
|
336
|
+
let { weaverseHost, projectId, isDesignMode } = configs;
|
|
318
337
|
if (!projectId) {
|
|
319
338
|
throw new Error("Missing Weaverse projectId!");
|
|
320
339
|
}
|
|
321
|
-
let res
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
340
|
+
let res;
|
|
341
|
+
if (isDesignMode) {
|
|
342
|
+
res = await fetch(`${weaverseHost}/${API}/${projectId}/configs`, {
|
|
343
|
+
method: "POST"
|
|
344
|
+
});
|
|
345
|
+
} else {
|
|
346
|
+
res = await this.fetchWithCache(
|
|
347
|
+
`${weaverseHost}/${API}/${projectId}/configs`,
|
|
348
|
+
{ method: "POST", strategy }
|
|
349
|
+
);
|
|
350
|
+
}
|
|
325
351
|
let data = res || {};
|
|
326
352
|
if (this.configs.isDesignMode) {
|
|
327
353
|
data = {
|
|
@@ -459,9 +485,9 @@ var WeaverseHydrogen = class extends Weaverse {
|
|
|
459
485
|
}
|
|
460
486
|
};
|
|
461
487
|
var WeaverseHydrogenItem = class extends WeaverseItemStore {
|
|
462
|
-
constructor(
|
|
463
|
-
super(
|
|
464
|
-
let { data, ...rest } =
|
|
488
|
+
constructor(initialData, weaverse) {
|
|
489
|
+
super(initialData, weaverse);
|
|
490
|
+
let { data, ...rest } = initialData;
|
|
465
491
|
this._store = { ...data, ...rest };
|
|
466
492
|
}
|
|
467
493
|
get Element() {
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version" : "2.
|
|
2
|
+
"version" : "2.2.0",
|
|
3
3
|
"license" : "MIT",
|
|
4
4
|
"main" : "dist/index.js",
|
|
5
5
|
"typings" : "dist/index.d.ts",
|
|
@@ -33,11 +33,11 @@
|
|
|
33
33
|
"author" : "Weaverse Team",
|
|
34
34
|
"dependencies" : {
|
|
35
35
|
"@remix-run/react" : "1.19.1",
|
|
36
|
-
"@shopify/hydrogen" : "2023.7.
|
|
37
|
-
"@weaverse/react" : "2.
|
|
36
|
+
"@shopify/hydrogen" : "2023.7.10",
|
|
37
|
+
"@weaverse/react" : "2.2.0",
|
|
38
38
|
"react-error-boundary" : "^4.0.11"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies" : {
|
|
41
|
-
"@shopify/remix-oxygen" : "^1.1.
|
|
41
|
+
"@shopify/remix-oxygen" : "^1.1.6"
|
|
42
42
|
}
|
|
43
43
|
}
|