@weaverse/hydrogen 1.1.4 → 1.1.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 +4 -20
- package/dist/index.d.ts +4 -20
- package/dist/index.js +31 -76
- package/dist/index.mjs +29 -72
- package/package.json +3 -3
package/dist/index.d.mts
CHANGED
|
@@ -175,17 +175,8 @@ type HydrogenPageData = {
|
|
|
175
175
|
type RelativeRoutingType = 'route' | 'path';
|
|
176
176
|
type To = string | Partial<Path>;
|
|
177
177
|
type Path = {
|
|
178
|
-
/**
|
|
179
|
-
* A URL pathname, beginning with a /.
|
|
180
|
-
*/
|
|
181
178
|
pathname: string;
|
|
182
|
-
/**
|
|
183
|
-
* A URL search string, beginning with a ?.
|
|
184
|
-
*/
|
|
185
179
|
search: string;
|
|
186
|
-
/**
|
|
187
|
-
* A URL fragment identifier, beginning with a #.
|
|
188
|
-
*/
|
|
189
180
|
hash: string;
|
|
190
181
|
};
|
|
191
182
|
type NavigateOptions = {
|
|
@@ -197,6 +188,8 @@ type NavigateOptions = {
|
|
|
197
188
|
type NavigateFunction = (to: To, options?: NavigateOptions) => void;
|
|
198
189
|
interface WeaverseHydrogenRootProps {
|
|
199
190
|
components: HydrogenComponent[];
|
|
191
|
+
countries: Localizations;
|
|
192
|
+
themeSchema: HydrogenThemeSchema;
|
|
200
193
|
errorComponent: React.FC<{
|
|
201
194
|
error: {
|
|
202
195
|
message: string;
|
|
@@ -233,7 +226,6 @@ declare global {
|
|
|
233
226
|
interface Window {
|
|
234
227
|
__weaverse: WeaverseHydrogen;
|
|
235
228
|
__weaverses: WeaverseHydrogen[];
|
|
236
|
-
__weaverseThemeConfigs: WeaverseThemeConfigs;
|
|
237
229
|
}
|
|
238
230
|
}
|
|
239
231
|
|
|
@@ -249,20 +241,12 @@ declare function fetchWithServerCache(params: FetchWithServerCacheParams): Promi
|
|
|
249
241
|
|
|
250
242
|
declare function weaverseLoader(args: LoaderArgs, components: HydrogenComponent[], countries: Localizations, loaderConfigs?: WeaverseLoaderConfigs): Promise<WeaverseLoaderData | null>;
|
|
251
243
|
|
|
252
|
-
declare function WeaverseStudio(): React.JSX.Element | null;
|
|
253
|
-
|
|
254
244
|
declare function getRequestQueries<T = Record<string, string | boolean>>(request: Request): T;
|
|
255
|
-
/**
|
|
256
|
-
* Check if the request is from Weaverse Studio.
|
|
257
|
-
* @param request Request
|
|
258
|
-
* @returns boolean
|
|
259
|
-
*/
|
|
260
|
-
declare function studioCheck(request: Request): boolean;
|
|
261
245
|
|
|
262
246
|
declare function getSelectedProductOptions(request: Request): _shopify_hydrogen_react_storefront_api_types.SelectedOptionInput[];
|
|
263
247
|
|
|
264
248
|
declare function useThemeSettings(): (Record<string, any> | ((newSettings: any) => void))[];
|
|
265
249
|
|
|
266
|
-
declare function WeaverseHydrogenRoot({
|
|
250
|
+
declare function WeaverseHydrogenRoot({ errorComponent: ErrorComponent, ...themeConfigs }: WeaverseHydrogenRootProps): React.JSX.Element;
|
|
267
251
|
|
|
268
|
-
export { FetchProjectRequestBody, HydrogenComponent, HydrogenComponentData, HydrogenComponentInstance, HydrogenComponentPresets, HydrogenComponentProps, HydrogenComponentSchema, HydrogenElement, HydrogenPageAssignment, HydrogenPageConfigs, HydrogenPageData, HydrogenProjectConfig, HydrogenProjectType, HydrogenThemeInfo, HydrogenThemeSchema, HydrogenToolbarAction, I18nLocale, InspectorGroup, Locale, Localizations, NavigateFunction, PageType, TODO, WeaverseHydrogen, WeaverseHydrogenRoot, WeaverseHydrogenRootProps, WeaverseInternal, WeaverseLoaderArgs, WeaverseLoaderConfigs, WeaverseLoaderData, WeaverseLoaderRequestInfo, WeaverseStorefrontData,
|
|
252
|
+
export { FetchProjectRequestBody, HydrogenComponent, HydrogenComponentData, HydrogenComponentInstance, HydrogenComponentPresets, HydrogenComponentProps, HydrogenComponentSchema, HydrogenElement, HydrogenPageAssignment, HydrogenPageConfigs, HydrogenPageData, HydrogenProjectConfig, HydrogenProjectType, HydrogenThemeInfo, HydrogenThemeSchema, HydrogenToolbarAction, I18nLocale, InspectorGroup, Locale, Localizations, NavigateFunction, PageType, TODO, WeaverseHydrogen, WeaverseHydrogenRoot, WeaverseHydrogenRootProps, WeaverseInternal, WeaverseLoaderArgs, WeaverseLoaderConfigs, WeaverseLoaderData, WeaverseLoaderRequestInfo, WeaverseStorefrontData, WeaverseThemeConfigs, fetchWithServerCache, getRequestQueries, getSelectedProductOptions, useThemeSettings, weaverseLoader };
|
package/dist/index.d.ts
CHANGED
|
@@ -175,17 +175,8 @@ type HydrogenPageData = {
|
|
|
175
175
|
type RelativeRoutingType = 'route' | 'path';
|
|
176
176
|
type To = string | Partial<Path>;
|
|
177
177
|
type Path = {
|
|
178
|
-
/**
|
|
179
|
-
* A URL pathname, beginning with a /.
|
|
180
|
-
*/
|
|
181
178
|
pathname: string;
|
|
182
|
-
/**
|
|
183
|
-
* A URL search string, beginning with a ?.
|
|
184
|
-
*/
|
|
185
179
|
search: string;
|
|
186
|
-
/**
|
|
187
|
-
* A URL fragment identifier, beginning with a #.
|
|
188
|
-
*/
|
|
189
180
|
hash: string;
|
|
190
181
|
};
|
|
191
182
|
type NavigateOptions = {
|
|
@@ -197,6 +188,8 @@ type NavigateOptions = {
|
|
|
197
188
|
type NavigateFunction = (to: To, options?: NavigateOptions) => void;
|
|
198
189
|
interface WeaverseHydrogenRootProps {
|
|
199
190
|
components: HydrogenComponent[];
|
|
191
|
+
countries: Localizations;
|
|
192
|
+
themeSchema: HydrogenThemeSchema;
|
|
200
193
|
errorComponent: React.FC<{
|
|
201
194
|
error: {
|
|
202
195
|
message: string;
|
|
@@ -233,7 +226,6 @@ declare global {
|
|
|
233
226
|
interface Window {
|
|
234
227
|
__weaverse: WeaverseHydrogen;
|
|
235
228
|
__weaverses: WeaverseHydrogen[];
|
|
236
|
-
__weaverseThemeConfigs: WeaverseThemeConfigs;
|
|
237
229
|
}
|
|
238
230
|
}
|
|
239
231
|
|
|
@@ -249,20 +241,12 @@ declare function fetchWithServerCache(params: FetchWithServerCacheParams): Promi
|
|
|
249
241
|
|
|
250
242
|
declare function weaverseLoader(args: LoaderArgs, components: HydrogenComponent[], countries: Localizations, loaderConfigs?: WeaverseLoaderConfigs): Promise<WeaverseLoaderData | null>;
|
|
251
243
|
|
|
252
|
-
declare function WeaverseStudio(): React.JSX.Element | null;
|
|
253
|
-
|
|
254
244
|
declare function getRequestQueries<T = Record<string, string | boolean>>(request: Request): T;
|
|
255
|
-
/**
|
|
256
|
-
* Check if the request is from Weaverse Studio.
|
|
257
|
-
* @param request Request
|
|
258
|
-
* @returns boolean
|
|
259
|
-
*/
|
|
260
|
-
declare function studioCheck(request: Request): boolean;
|
|
261
245
|
|
|
262
246
|
declare function getSelectedProductOptions(request: Request): _shopify_hydrogen_react_storefront_api_types.SelectedOptionInput[];
|
|
263
247
|
|
|
264
248
|
declare function useThemeSettings(): (Record<string, any> | ((newSettings: any) => void))[];
|
|
265
249
|
|
|
266
|
-
declare function WeaverseHydrogenRoot({
|
|
250
|
+
declare function WeaverseHydrogenRoot({ errorComponent: ErrorComponent, ...themeConfigs }: WeaverseHydrogenRootProps): React.JSX.Element;
|
|
267
251
|
|
|
268
|
-
export { FetchProjectRequestBody, HydrogenComponent, HydrogenComponentData, HydrogenComponentInstance, HydrogenComponentPresets, HydrogenComponentProps, HydrogenComponentSchema, HydrogenElement, HydrogenPageAssignment, HydrogenPageConfigs, HydrogenPageData, HydrogenProjectConfig, HydrogenProjectType, HydrogenThemeInfo, HydrogenThemeSchema, HydrogenToolbarAction, I18nLocale, InspectorGroup, Locale, Localizations, NavigateFunction, PageType, TODO, WeaverseHydrogen, WeaverseHydrogenRoot, WeaverseHydrogenRootProps, WeaverseInternal, WeaverseLoaderArgs, WeaverseLoaderConfigs, WeaverseLoaderData, WeaverseLoaderRequestInfo, WeaverseStorefrontData,
|
|
252
|
+
export { FetchProjectRequestBody, HydrogenComponent, HydrogenComponentData, HydrogenComponentInstance, HydrogenComponentPresets, HydrogenComponentProps, HydrogenComponentSchema, HydrogenElement, HydrogenPageAssignment, HydrogenPageConfigs, HydrogenPageData, HydrogenProjectConfig, HydrogenProjectType, HydrogenThemeInfo, HydrogenThemeSchema, HydrogenToolbarAction, I18nLocale, InspectorGroup, Locale, Localizations, NavigateFunction, PageType, TODO, WeaverseHydrogen, WeaverseHydrogenRoot, WeaverseHydrogenRootProps, WeaverseInternal, WeaverseLoaderArgs, WeaverseLoaderConfigs, WeaverseLoaderData, WeaverseLoaderRequestInfo, WeaverseStorefrontData, WeaverseThemeConfigs, fetchWithServerCache, getRequestQueries, getSelectedProductOptions, useThemeSettings, weaverseLoader };
|
package/dist/index.js
CHANGED
|
@@ -32,18 +32,16 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
32
32
|
var src_exports = {};
|
|
33
33
|
__export(src_exports, {
|
|
34
34
|
WeaverseHydrogenRoot: () => WeaverseHydrogenRoot,
|
|
35
|
-
WeaverseStudio: () => WeaverseStudio,
|
|
36
35
|
fetchWithServerCache: () => fetchWithServerCache,
|
|
37
36
|
getRequestQueries: () => getRequestQueries,
|
|
38
37
|
getSelectedProductOptions: () => getSelectedProductOptions,
|
|
39
|
-
studioCheck: () => studioCheck,
|
|
40
38
|
useThemeSettings: () => useThemeSettings,
|
|
41
39
|
weaverseLoader: () => weaverseLoader
|
|
42
40
|
});
|
|
43
41
|
module.exports = __toCommonJS(src_exports);
|
|
44
|
-
var
|
|
45
|
-
var
|
|
46
|
-
var
|
|
42
|
+
var import_react6 = require("@remix-run/react");
|
|
43
|
+
var import_react7 = require("@weaverse/react");
|
|
44
|
+
var import_react8 = __toESM(require("react"));
|
|
47
45
|
var import_react_error_boundary = require("react-error-boundary");
|
|
48
46
|
|
|
49
47
|
// src/context.ts
|
|
@@ -72,10 +70,9 @@ function createWeaverseInstance(weaverseData, components) {
|
|
|
72
70
|
...configs,
|
|
73
71
|
data: page || {},
|
|
74
72
|
pageId: page?.id,
|
|
75
|
-
platformType: "shopify-hydrogen"
|
|
73
|
+
platformType: "shopify-hydrogen",
|
|
74
|
+
internal: { project, pageAssignment }
|
|
76
75
|
});
|
|
77
|
-
weaverse.internal.project = project;
|
|
78
|
-
weaverse.internal.pageAssignment = pageAssignment;
|
|
79
76
|
components.forEach((comp) => {
|
|
80
77
|
weaverse.registerElement({
|
|
81
78
|
type: comp?.schema?.type,
|
|
@@ -90,19 +87,26 @@ function createWeaverseInstance(weaverseData, components) {
|
|
|
90
87
|
var import_react2 = require("@remix-run/react");
|
|
91
88
|
var import_react3 = require("@weaverse/react");
|
|
92
89
|
var import_react4 = require("react");
|
|
93
|
-
function useStudio(weaverse) {
|
|
90
|
+
function useStudio(weaverse, countries, schema) {
|
|
94
91
|
let navigate = (0, import_react2.useNavigate)();
|
|
95
92
|
let revalidator = (0, import_react2.useRevalidator)();
|
|
93
|
+
let { isDesignMode, weaverseHost, weaverseVersion } = weaverse;
|
|
94
|
+
let isStudio = import_react3.isIframe && isDesignMode && weaverseHost && weaverseVersion;
|
|
96
95
|
(0, import_react4.useEffect)(() => {
|
|
97
|
-
if (
|
|
96
|
+
if (isStudio) {
|
|
98
97
|
weaverse.internal = {
|
|
99
98
|
...weaverse.internal,
|
|
100
99
|
navigate,
|
|
101
|
-
revalidator
|
|
100
|
+
revalidator,
|
|
101
|
+
themeConfigs: { schema, countries }
|
|
102
102
|
};
|
|
103
103
|
window.__weaverse = weaverse;
|
|
104
104
|
if (window.weaverseStudio) {
|
|
105
105
|
window.weaverseStudio.init(weaverse);
|
|
106
|
+
} else {
|
|
107
|
+
(0, import_react3.loadScript)(
|
|
108
|
+
`${weaverseHost}/assets/studio/hydrogen/index.js?v=${weaverseVersion}`
|
|
109
|
+
);
|
|
106
110
|
}
|
|
107
111
|
}
|
|
108
112
|
}, [weaverse]);
|
|
@@ -138,13 +142,6 @@ function getRequestQueries(request) {
|
|
|
138
142
|
{}
|
|
139
143
|
);
|
|
140
144
|
}
|
|
141
|
-
function studioCheck(request) {
|
|
142
|
-
let queries = getRequestQueries(request);
|
|
143
|
-
let { weaverseProjectId, weaverseHost, isDesignMode, weaverseVersion } = queries;
|
|
144
|
-
return Boolean(
|
|
145
|
-
isDesignMode && weaverseProjectId && weaverseHost && weaverseVersion
|
|
146
|
-
);
|
|
147
|
-
}
|
|
148
145
|
|
|
149
146
|
// src/loader.ts
|
|
150
147
|
async function weaverseLoader(args, components, countries, loaderConfigs) {
|
|
@@ -230,40 +227,6 @@ async function withLoaderData(items, components, configs, args) {
|
|
|
230
227
|
);
|
|
231
228
|
}
|
|
232
229
|
|
|
233
|
-
// src/studio.tsx
|
|
234
|
-
var import_react5 = require("@remix-run/react");
|
|
235
|
-
var import_react6 = __toESM(require("react"));
|
|
236
|
-
function WeaverseStudio() {
|
|
237
|
-
let { search } = (0, import_react5.useLocation)();
|
|
238
|
-
let { weaverseThemeConfigs } = (0, import_react5.useLoaderData)();
|
|
239
|
-
if (weaverseThemeConfigs instanceof Promise) {
|
|
240
|
-
let params = new URLSearchParams(search);
|
|
241
|
-
let weaverseHost = params.get("weaverseHost");
|
|
242
|
-
let weaverseVersion = params.get("weaverseVersion");
|
|
243
|
-
return /* @__PURE__ */ import_react6.default.createElement(import_react6.Suspense, null, /* @__PURE__ */ import_react6.default.createElement(import_react5.Await, { resolve: weaverseThemeConfigs }, (configs) => {
|
|
244
|
-
if (!configs)
|
|
245
|
-
return null;
|
|
246
|
-
return /* @__PURE__ */ import_react6.default.createElement(import_react6.default.Fragment, null, /* @__PURE__ */ import_react6.default.createElement(
|
|
247
|
-
"script",
|
|
248
|
-
{
|
|
249
|
-
src: `${weaverseHost}/assets/studio/hydrogen/index.js?v=${weaverseVersion}`,
|
|
250
|
-
async: true
|
|
251
|
-
}
|
|
252
|
-
), /* @__PURE__ */ import_react6.default.createElement(
|
|
253
|
-
"script",
|
|
254
|
-
{
|
|
255
|
-
dangerouslySetInnerHTML: {
|
|
256
|
-
__html: `window.__weaverseThemeConfigs = ${JSON.stringify(
|
|
257
|
-
configs
|
|
258
|
-
)}`
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
));
|
|
262
|
-
}));
|
|
263
|
-
}
|
|
264
|
-
return null;
|
|
265
|
-
}
|
|
266
|
-
|
|
267
230
|
// src/hydrogen-wrappers.ts
|
|
268
231
|
var import_hydrogen2 = require("@shopify/hydrogen");
|
|
269
232
|
function getSelectedProductOptions(request) {
|
|
@@ -274,9 +237,9 @@ function getSelectedProductOptions(request) {
|
|
|
274
237
|
}
|
|
275
238
|
|
|
276
239
|
// src/hooks/use-theme-settings.ts
|
|
277
|
-
var
|
|
240
|
+
var import_react5 = require("@weaverse/react");
|
|
278
241
|
function useThemeSettings() {
|
|
279
|
-
let weaverse = (0,
|
|
242
|
+
let weaverse = (0, import_react5.useWeaverse)();
|
|
280
243
|
let settings = weaverse?.internal?.project?.config?.theme;
|
|
281
244
|
let updateSettings = (newSettings) => {
|
|
282
245
|
weaverse.internal.project.config.theme = Object.assign(
|
|
@@ -291,32 +254,26 @@ function useThemeSettings() {
|
|
|
291
254
|
|
|
292
255
|
// src/index.tsx
|
|
293
256
|
function WeaverseHydrogenRoot({
|
|
294
|
-
|
|
295
|
-
|
|
257
|
+
errorComponent: ErrorComponent,
|
|
258
|
+
...themeConfigs
|
|
296
259
|
}) {
|
|
297
|
-
let data = (0,
|
|
298
|
-
let
|
|
299
|
-
if (
|
|
300
|
-
if (
|
|
301
|
-
return /* @__PURE__ */
|
|
302
|
-
return /* @__PURE__ */
|
|
260
|
+
let data = (0, import_react6.useLoaderData)();
|
|
261
|
+
let weaverseData = data?.weaverseData;
|
|
262
|
+
if (weaverseData) {
|
|
263
|
+
if (weaverseData instanceof Promise) {
|
|
264
|
+
return /* @__PURE__ */ import_react8.default.createElement(import_react_error_boundary.ErrorBoundary, { fallbackRender: ErrorComponent }, /* @__PURE__ */ import_react8.default.createElement(import_react8.Suspense, null, /* @__PURE__ */ import_react8.default.createElement(import_react6.Await, { resolve: weaverseData }, (resolvedData) => {
|
|
265
|
+
return /* @__PURE__ */ import_react8.default.createElement(
|
|
303
266
|
RenderWeaverseRoot,
|
|
304
267
|
{
|
|
305
268
|
weaverseData: resolvedData,
|
|
306
|
-
|
|
269
|
+
...themeConfigs
|
|
307
270
|
}
|
|
308
271
|
);
|
|
309
272
|
})));
|
|
310
273
|
}
|
|
311
|
-
return /* @__PURE__ */
|
|
312
|
-
RenderWeaverseRoot,
|
|
313
|
-
{
|
|
314
|
-
weaverseData: weaverseDataFromLoader,
|
|
315
|
-
components
|
|
316
|
-
}
|
|
317
|
-
);
|
|
274
|
+
return /* @__PURE__ */ import_react8.default.createElement(RenderWeaverseRoot, { weaverseData, ...themeConfigs });
|
|
318
275
|
}
|
|
319
|
-
return /* @__PURE__ */
|
|
276
|
+
return /* @__PURE__ */ import_react8.default.createElement(
|
|
320
277
|
ErrorComponent,
|
|
321
278
|
{
|
|
322
279
|
error: { message: "No Weaverse data return from route loader!" }
|
|
@@ -324,19 +281,17 @@ function WeaverseHydrogenRoot({
|
|
|
324
281
|
);
|
|
325
282
|
}
|
|
326
283
|
function RenderWeaverseRoot(props) {
|
|
327
|
-
let { components,
|
|
284
|
+
let { weaverseData, components, countries, themeSchema } = props;
|
|
328
285
|
let weaverse = createWeaverseInstance(weaverseData, components);
|
|
329
|
-
useStudio(weaverse);
|
|
330
|
-
return /* @__PURE__ */
|
|
286
|
+
useStudio(weaverse, countries, themeSchema);
|
|
287
|
+
return /* @__PURE__ */ import_react8.default.createElement(import_react7.WeaverseRoot, { context: weaverse });
|
|
331
288
|
}
|
|
332
289
|
// Annotate the CommonJS export names for ESM import in node:
|
|
333
290
|
0 && (module.exports = {
|
|
334
291
|
WeaverseHydrogenRoot,
|
|
335
|
-
WeaverseStudio,
|
|
336
292
|
fetchWithServerCache,
|
|
337
293
|
getRequestQueries,
|
|
338
294
|
getSelectedProductOptions,
|
|
339
|
-
studioCheck,
|
|
340
295
|
useThemeSettings,
|
|
341
296
|
weaverseLoader,
|
|
342
297
|
...require("@weaverse/react")
|
package/dist/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// src/index.tsx
|
|
2
|
-
import { Await
|
|
2
|
+
import { Await, useLoaderData } from "@remix-run/react";
|
|
3
3
|
import { WeaverseRoot } from "@weaverse/react";
|
|
4
|
-
import
|
|
4
|
+
import React, { Suspense } from "react";
|
|
5
5
|
import { ErrorBoundary } from "react-error-boundary";
|
|
6
6
|
|
|
7
7
|
// src/context.ts
|
|
@@ -30,10 +30,9 @@ function createWeaverseInstance(weaverseData, components) {
|
|
|
30
30
|
...configs,
|
|
31
31
|
data: page || {},
|
|
32
32
|
pageId: page?.id,
|
|
33
|
-
platformType: "shopify-hydrogen"
|
|
33
|
+
platformType: "shopify-hydrogen",
|
|
34
|
+
internal: { project, pageAssignment }
|
|
34
35
|
});
|
|
35
|
-
weaverse.internal.project = project;
|
|
36
|
-
weaverse.internal.pageAssignment = pageAssignment;
|
|
37
36
|
components.forEach((comp) => {
|
|
38
37
|
weaverse.registerElement({
|
|
39
38
|
type: comp?.schema?.type,
|
|
@@ -46,21 +45,28 @@ function createWeaverseInstance(weaverseData, components) {
|
|
|
46
45
|
|
|
47
46
|
// src/hooks/use-studio.ts
|
|
48
47
|
import { useNavigate, useRevalidator } from "@remix-run/react";
|
|
49
|
-
import { isIframe } from "@weaverse/react";
|
|
48
|
+
import { isIframe, loadScript } from "@weaverse/react";
|
|
50
49
|
import { useEffect } from "react";
|
|
51
|
-
function useStudio(weaverse) {
|
|
50
|
+
function useStudio(weaverse, countries, schema) {
|
|
52
51
|
let navigate = useNavigate();
|
|
53
52
|
let revalidator = useRevalidator();
|
|
53
|
+
let { isDesignMode, weaverseHost, weaverseVersion } = weaverse;
|
|
54
|
+
let isStudio = isIframe && isDesignMode && weaverseHost && weaverseVersion;
|
|
54
55
|
useEffect(() => {
|
|
55
|
-
if (
|
|
56
|
+
if (isStudio) {
|
|
56
57
|
weaverse.internal = {
|
|
57
58
|
...weaverse.internal,
|
|
58
59
|
navigate,
|
|
59
|
-
revalidator
|
|
60
|
+
revalidator,
|
|
61
|
+
themeConfigs: { schema, countries }
|
|
60
62
|
};
|
|
61
63
|
window.__weaverse = weaverse;
|
|
62
64
|
if (window.weaverseStudio) {
|
|
63
65
|
window.weaverseStudio.init(weaverse);
|
|
66
|
+
} else {
|
|
67
|
+
loadScript(
|
|
68
|
+
`${weaverseHost}/assets/studio/hydrogen/index.js?v=${weaverseVersion}`
|
|
69
|
+
);
|
|
64
70
|
}
|
|
65
71
|
}
|
|
66
72
|
}, [weaverse]);
|
|
@@ -96,13 +102,6 @@ function getRequestQueries(request) {
|
|
|
96
102
|
{}
|
|
97
103
|
);
|
|
98
104
|
}
|
|
99
|
-
function studioCheck(request) {
|
|
100
|
-
let queries = getRequestQueries(request);
|
|
101
|
-
let { weaverseProjectId, weaverseHost, isDesignMode, weaverseVersion } = queries;
|
|
102
|
-
return Boolean(
|
|
103
|
-
isDesignMode && weaverseProjectId && weaverseHost && weaverseVersion
|
|
104
|
-
);
|
|
105
|
-
}
|
|
106
105
|
|
|
107
106
|
// src/loader.ts
|
|
108
107
|
async function weaverseLoader(args, components, countries, loaderConfigs) {
|
|
@@ -188,40 +187,6 @@ async function withLoaderData(items, components, configs, args) {
|
|
|
188
187
|
);
|
|
189
188
|
}
|
|
190
189
|
|
|
191
|
-
// src/studio.tsx
|
|
192
|
-
import { Await, useLoaderData, useLocation } from "@remix-run/react";
|
|
193
|
-
import React, { Suspense } from "react";
|
|
194
|
-
function WeaverseStudio() {
|
|
195
|
-
let { search } = useLocation();
|
|
196
|
-
let { weaverseThemeConfigs } = useLoaderData();
|
|
197
|
-
if (weaverseThemeConfigs instanceof Promise) {
|
|
198
|
-
let params = new URLSearchParams(search);
|
|
199
|
-
let weaverseHost = params.get("weaverseHost");
|
|
200
|
-
let weaverseVersion = params.get("weaverseVersion");
|
|
201
|
-
return /* @__PURE__ */ React.createElement(Suspense, null, /* @__PURE__ */ React.createElement(Await, { resolve: weaverseThemeConfigs }, (configs) => {
|
|
202
|
-
if (!configs)
|
|
203
|
-
return null;
|
|
204
|
-
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
|
|
205
|
-
"script",
|
|
206
|
-
{
|
|
207
|
-
src: `${weaverseHost}/assets/studio/hydrogen/index.js?v=${weaverseVersion}`,
|
|
208
|
-
async: true
|
|
209
|
-
}
|
|
210
|
-
), /* @__PURE__ */ React.createElement(
|
|
211
|
-
"script",
|
|
212
|
-
{
|
|
213
|
-
dangerouslySetInnerHTML: {
|
|
214
|
-
__html: `window.__weaverseThemeConfigs = ${JSON.stringify(
|
|
215
|
-
configs
|
|
216
|
-
)}`
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
));
|
|
220
|
-
}));
|
|
221
|
-
}
|
|
222
|
-
return null;
|
|
223
|
-
}
|
|
224
|
-
|
|
225
190
|
// src/hydrogen-wrappers.ts
|
|
226
191
|
import { getSelectedProductOptions as hydrogen_getSelectedProductOptions } from "@shopify/hydrogen";
|
|
227
192
|
function getSelectedProductOptions(request) {
|
|
@@ -249,32 +214,26 @@ function useThemeSettings() {
|
|
|
249
214
|
|
|
250
215
|
// src/index.tsx
|
|
251
216
|
function WeaverseHydrogenRoot({
|
|
252
|
-
|
|
253
|
-
|
|
217
|
+
errorComponent: ErrorComponent,
|
|
218
|
+
...themeConfigs
|
|
254
219
|
}) {
|
|
255
|
-
let data =
|
|
256
|
-
let
|
|
257
|
-
if (
|
|
258
|
-
if (
|
|
259
|
-
return /* @__PURE__ */
|
|
260
|
-
return /* @__PURE__ */
|
|
220
|
+
let data = useLoaderData();
|
|
221
|
+
let weaverseData = data?.weaverseData;
|
|
222
|
+
if (weaverseData) {
|
|
223
|
+
if (weaverseData instanceof Promise) {
|
|
224
|
+
return /* @__PURE__ */ React.createElement(ErrorBoundary, { fallbackRender: ErrorComponent }, /* @__PURE__ */ React.createElement(Suspense, null, /* @__PURE__ */ React.createElement(Await, { resolve: weaverseData }, (resolvedData) => {
|
|
225
|
+
return /* @__PURE__ */ React.createElement(
|
|
261
226
|
RenderWeaverseRoot,
|
|
262
227
|
{
|
|
263
228
|
weaverseData: resolvedData,
|
|
264
|
-
|
|
229
|
+
...themeConfigs
|
|
265
230
|
}
|
|
266
231
|
);
|
|
267
232
|
})));
|
|
268
233
|
}
|
|
269
|
-
return /* @__PURE__ */
|
|
270
|
-
RenderWeaverseRoot,
|
|
271
|
-
{
|
|
272
|
-
weaverseData: weaverseDataFromLoader,
|
|
273
|
-
components
|
|
274
|
-
}
|
|
275
|
-
);
|
|
234
|
+
return /* @__PURE__ */ React.createElement(RenderWeaverseRoot, { weaverseData, ...themeConfigs });
|
|
276
235
|
}
|
|
277
|
-
return /* @__PURE__ */
|
|
236
|
+
return /* @__PURE__ */ React.createElement(
|
|
278
237
|
ErrorComponent,
|
|
279
238
|
{
|
|
280
239
|
error: { message: "No Weaverse data return from route loader!" }
|
|
@@ -282,18 +241,16 @@ function WeaverseHydrogenRoot({
|
|
|
282
241
|
);
|
|
283
242
|
}
|
|
284
243
|
function RenderWeaverseRoot(props) {
|
|
285
|
-
let { components,
|
|
244
|
+
let { weaverseData, components, countries, themeSchema } = props;
|
|
286
245
|
let weaverse = createWeaverseInstance(weaverseData, components);
|
|
287
|
-
useStudio(weaverse);
|
|
288
|
-
return /* @__PURE__ */
|
|
246
|
+
useStudio(weaverse, countries, themeSchema);
|
|
247
|
+
return /* @__PURE__ */ React.createElement(WeaverseRoot, { context: weaverse });
|
|
289
248
|
}
|
|
290
249
|
export {
|
|
291
250
|
WeaverseHydrogenRoot,
|
|
292
|
-
WeaverseStudio,
|
|
293
251
|
fetchWithServerCache,
|
|
294
252
|
getRequestQueries,
|
|
295
253
|
getSelectedProductOptions,
|
|
296
|
-
studioCheck,
|
|
297
254
|
useThemeSettings,
|
|
298
255
|
weaverseLoader
|
|
299
256
|
};
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.1.
|
|
2
|
+
"version": "1.1.5",
|
|
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.1",
|
|
37
|
-
"@weaverse/react": "1.1.
|
|
37
|
+
"@weaverse/react": "1.1.5",
|
|
38
38
|
"react-error-boundary": "^4.0.10"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"@shopify/remix-oxygen": "^1.1.2"
|
|
42
42
|
}
|
|
43
|
-
}
|
|
43
|
+
}
|