@weaverse/hydrogen 3.1.0 → 3.1.2
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 +19 -18
- package/dist/index.d.ts +19 -18
- package/dist/index.js +191 -191
- package/dist/index.mjs +191 -190
- package/package.json +2 -2
package/dist/index.d.mts
CHANGED
|
@@ -6,21 +6,6 @@ import { LanguageCode, CountryCode, CurrencyCode, SelectedOptionInput } from '@s
|
|
|
6
6
|
import { LoaderFunctionArgs, AppLoadContext } from '@shopify/remix-oxygen';
|
|
7
7
|
import React, { ForwardRefExoticComponent } from 'react';
|
|
8
8
|
|
|
9
|
-
declare class ThemeSettingsStore {
|
|
10
|
-
static settings: HydrogenThemeSettings | null;
|
|
11
|
-
listeners: (() => void)[];
|
|
12
|
-
countries?: Localizations;
|
|
13
|
-
schema?: HydrogenThemeSchema;
|
|
14
|
-
publicEnv?: PublicEnv;
|
|
15
|
-
constructor(data: RootRouteData['weaverseTheme']);
|
|
16
|
-
updateThemeSettings: (newSettings: HydrogenThemeSettings) => void;
|
|
17
|
-
subscribe: (listener: () => void) => (() => void);
|
|
18
|
-
getSnapshot: () => HydrogenThemeSettings | null;
|
|
19
|
-
getServerSnapshot: () => HydrogenThemeSettings | null;
|
|
20
|
-
emitChange: () => void;
|
|
21
|
-
}
|
|
22
|
-
declare function useThemeSettings<T = HydrogenThemeSettings>(): T;
|
|
23
|
-
|
|
24
9
|
declare let STORE_PAGES: {
|
|
25
10
|
INDEX: string;
|
|
26
11
|
PRODUCT: string;
|
|
@@ -33,6 +18,21 @@ declare let STORE_PAGES: {
|
|
|
33
18
|
CUSTOM: string;
|
|
34
19
|
};
|
|
35
20
|
|
|
21
|
+
declare class ThemeSettingsStore {
|
|
22
|
+
settings: HydrogenThemeSettings;
|
|
23
|
+
listeners: (() => void)[];
|
|
24
|
+
countries?: Localizations;
|
|
25
|
+
schema?: HydrogenThemeSchema;
|
|
26
|
+
publicEnv?: PublicEnv;
|
|
27
|
+
constructor(data: RootRouteData['weaverseTheme']);
|
|
28
|
+
updateThemeSettings: (newSettings: HydrogenThemeSettings) => void;
|
|
29
|
+
subscribe: (listener: () => void) => (() => void);
|
|
30
|
+
getSnapshot: () => HydrogenThemeSettings;
|
|
31
|
+
getServerSnapshot: () => HydrogenThemeSettings;
|
|
32
|
+
emitChange: () => void;
|
|
33
|
+
}
|
|
34
|
+
declare function useThemeSettings<T = HydrogenThemeSettings>(): T;
|
|
35
|
+
|
|
36
36
|
declare class WeaverseClient {
|
|
37
37
|
API: string;
|
|
38
38
|
basePageConfigs: Omit<WeaverseProjectConfigs, 'requestInfo'>;
|
|
@@ -312,6 +312,7 @@ declare global {
|
|
|
312
312
|
interface Window {
|
|
313
313
|
__weaverse: WeaverseHydrogen;
|
|
314
314
|
__weaverses: Record<string, WeaverseHydrogen>;
|
|
315
|
+
__weaverseThemeSettingsStore: ThemeSettingsStore;
|
|
315
316
|
}
|
|
316
317
|
}
|
|
317
318
|
|
|
@@ -320,10 +321,10 @@ declare function withWeaverse(Component: React.ComponentType<any>): (props: Reac
|
|
|
320
321
|
|
|
321
322
|
declare function getRequestQueries<T = Record<string, string | boolean>>(request: Request): T;
|
|
322
323
|
declare function getWeaverseConfigs(request: Request, env: HydrogenThemeEnv): WeaverseProjectConfigs;
|
|
324
|
+
declare function generateDataFromSchema({ inspector, }: HydrogenComponentSchema | HydrogenThemeSchema): Record<string, any>;
|
|
323
325
|
|
|
324
326
|
declare function getSelectedProductOptions(request: Request): SelectedOptionInput[];
|
|
325
327
|
|
|
326
|
-
declare let registerComponents: (components: HydrogenComponent[]) => void;
|
|
327
328
|
declare class WeaverseHydrogen extends Weaverse {
|
|
328
329
|
platformType: PlatformTypeEnum;
|
|
329
330
|
pageId: string;
|
|
@@ -339,7 +340,7 @@ declare class WeaverseHydrogenItem extends WeaverseItemStore {
|
|
|
339
340
|
weaverse: WeaverseHydrogen;
|
|
340
341
|
constructor(initialData: HydrogenComponentData, weaverse: WeaverseHydrogen);
|
|
341
342
|
get Element(): HydrogenElement;
|
|
342
|
-
|
|
343
|
+
get _schemaData(): Record<string, any>;
|
|
343
344
|
}
|
|
344
345
|
|
|
345
|
-
export { type AllCacheOptions, type BasicInput, type ComponentLoaderArgs, type CreateWeaverseClientArgs, type FetchProjectPayload, type FetchProjectRequestBody, type FetchWithCacheOptions, type HeadingInput, type HeadingInputType, type HydrogenComponent, type HydrogenComponentData, type HydrogenComponentLoaderFunction, type HydrogenComponentPresets, type HydrogenComponentProps, type HydrogenComponentSchema, type HydrogenElement, type HydrogenPageAssignment, type HydrogenPageConfigs, type HydrogenPageData, type HydrogenProjectConfig, type HydrogenProjectType, type HydrogenThemeEnv, type HydrogenThemeInfo, type HydrogenThemeSchema, type HydrogenThemeSettings, type HydrogenToolbarAction, type I18nLocale, type InspectorGroup, type LoadPageParams, type Locale, type Localizations, type PageAssignmentParams, type PageType, type PublicEnv, type RootRouteData, type RouteLoaderArgs,
|
|
346
|
+
export { type AllCacheOptions, type BasicInput, type ComponentLoaderArgs, type CreateWeaverseClientArgs, type FetchProjectPayload, type FetchProjectRequestBody, type FetchWithCacheOptions, type HeadingInput, type HeadingInputType, type HydrogenComponent, type HydrogenComponentData, type HydrogenComponentLoaderFunction, type HydrogenComponentPresets, type HydrogenComponentProps, type HydrogenComponentSchema, type HydrogenElement, type HydrogenPageAssignment, type HydrogenPageConfigs, type HydrogenPageData, type HydrogenProjectConfig, type HydrogenProjectType, type HydrogenThemeEnv, type HydrogenThemeInfo, type HydrogenThemeSchema, type HydrogenThemeSettings, type HydrogenToolbarAction, type I18nLocale, type InspectorGroup, type LoadPageParams, type Locale, type Localizations, type PageAssignmentParams, type PageType, type PublicEnv, type RootRouteData, type RouteLoaderArgs, type WeaverseArticle, type WeaverseBlog, WeaverseClient, type WeaverseClientArgs, type WeaverseCollection, WeaverseHydrogen, WeaverseHydrogenItem, type WeaverseHydrogenParams, WeaverseHydrogenRoot, type WeaverseHydrogenRootProps, type WeaverseInternal, type WeaverseLoaderData, type WeaverseLoaderRequestInfo, type WeaverseProduct, type WeaverseProjectConfigs, type WeaverseStorefrontData, type WeaverseStudioQueries, type WeaverseThemeConfigs, generateDataFromSchema, getRequestQueries, getSelectedProductOptions, getWeaverseConfigs, useThemeSettings, withWeaverse };
|
package/dist/index.d.ts
CHANGED
|
@@ -6,21 +6,6 @@ import { LanguageCode, CountryCode, CurrencyCode, SelectedOptionInput } from '@s
|
|
|
6
6
|
import { LoaderFunctionArgs, AppLoadContext } from '@shopify/remix-oxygen';
|
|
7
7
|
import React, { ForwardRefExoticComponent } from 'react';
|
|
8
8
|
|
|
9
|
-
declare class ThemeSettingsStore {
|
|
10
|
-
static settings: HydrogenThemeSettings | null;
|
|
11
|
-
listeners: (() => void)[];
|
|
12
|
-
countries?: Localizations;
|
|
13
|
-
schema?: HydrogenThemeSchema;
|
|
14
|
-
publicEnv?: PublicEnv;
|
|
15
|
-
constructor(data: RootRouteData['weaverseTheme']);
|
|
16
|
-
updateThemeSettings: (newSettings: HydrogenThemeSettings) => void;
|
|
17
|
-
subscribe: (listener: () => void) => (() => void);
|
|
18
|
-
getSnapshot: () => HydrogenThemeSettings | null;
|
|
19
|
-
getServerSnapshot: () => HydrogenThemeSettings | null;
|
|
20
|
-
emitChange: () => void;
|
|
21
|
-
}
|
|
22
|
-
declare function useThemeSettings<T = HydrogenThemeSettings>(): T;
|
|
23
|
-
|
|
24
9
|
declare let STORE_PAGES: {
|
|
25
10
|
INDEX: string;
|
|
26
11
|
PRODUCT: string;
|
|
@@ -33,6 +18,21 @@ declare let STORE_PAGES: {
|
|
|
33
18
|
CUSTOM: string;
|
|
34
19
|
};
|
|
35
20
|
|
|
21
|
+
declare class ThemeSettingsStore {
|
|
22
|
+
settings: HydrogenThemeSettings;
|
|
23
|
+
listeners: (() => void)[];
|
|
24
|
+
countries?: Localizations;
|
|
25
|
+
schema?: HydrogenThemeSchema;
|
|
26
|
+
publicEnv?: PublicEnv;
|
|
27
|
+
constructor(data: RootRouteData['weaverseTheme']);
|
|
28
|
+
updateThemeSettings: (newSettings: HydrogenThemeSettings) => void;
|
|
29
|
+
subscribe: (listener: () => void) => (() => void);
|
|
30
|
+
getSnapshot: () => HydrogenThemeSettings;
|
|
31
|
+
getServerSnapshot: () => HydrogenThemeSettings;
|
|
32
|
+
emitChange: () => void;
|
|
33
|
+
}
|
|
34
|
+
declare function useThemeSettings<T = HydrogenThemeSettings>(): T;
|
|
35
|
+
|
|
36
36
|
declare class WeaverseClient {
|
|
37
37
|
API: string;
|
|
38
38
|
basePageConfigs: Omit<WeaverseProjectConfigs, 'requestInfo'>;
|
|
@@ -312,6 +312,7 @@ declare global {
|
|
|
312
312
|
interface Window {
|
|
313
313
|
__weaverse: WeaverseHydrogen;
|
|
314
314
|
__weaverses: Record<string, WeaverseHydrogen>;
|
|
315
|
+
__weaverseThemeSettingsStore: ThemeSettingsStore;
|
|
315
316
|
}
|
|
316
317
|
}
|
|
317
318
|
|
|
@@ -320,10 +321,10 @@ declare function withWeaverse(Component: React.ComponentType<any>): (props: Reac
|
|
|
320
321
|
|
|
321
322
|
declare function getRequestQueries<T = Record<string, string | boolean>>(request: Request): T;
|
|
322
323
|
declare function getWeaverseConfigs(request: Request, env: HydrogenThemeEnv): WeaverseProjectConfigs;
|
|
324
|
+
declare function generateDataFromSchema({ inspector, }: HydrogenComponentSchema | HydrogenThemeSchema): Record<string, any>;
|
|
323
325
|
|
|
324
326
|
declare function getSelectedProductOptions(request: Request): SelectedOptionInput[];
|
|
325
327
|
|
|
326
|
-
declare let registerComponents: (components: HydrogenComponent[]) => void;
|
|
327
328
|
declare class WeaverseHydrogen extends Weaverse {
|
|
328
329
|
platformType: PlatformTypeEnum;
|
|
329
330
|
pageId: string;
|
|
@@ -339,7 +340,7 @@ declare class WeaverseHydrogenItem extends WeaverseItemStore {
|
|
|
339
340
|
weaverse: WeaverseHydrogen;
|
|
340
341
|
constructor(initialData: HydrogenComponentData, weaverse: WeaverseHydrogen);
|
|
341
342
|
get Element(): HydrogenElement;
|
|
342
|
-
|
|
343
|
+
get _schemaData(): Record<string, any>;
|
|
343
344
|
}
|
|
344
345
|
|
|
345
|
-
export { type AllCacheOptions, type BasicInput, type ComponentLoaderArgs, type CreateWeaverseClientArgs, type FetchProjectPayload, type FetchProjectRequestBody, type FetchWithCacheOptions, type HeadingInput, type HeadingInputType, type HydrogenComponent, type HydrogenComponentData, type HydrogenComponentLoaderFunction, type HydrogenComponentPresets, type HydrogenComponentProps, type HydrogenComponentSchema, type HydrogenElement, type HydrogenPageAssignment, type HydrogenPageConfigs, type HydrogenPageData, type HydrogenProjectConfig, type HydrogenProjectType, type HydrogenThemeEnv, type HydrogenThemeInfo, type HydrogenThemeSchema, type HydrogenThemeSettings, type HydrogenToolbarAction, type I18nLocale, type InspectorGroup, type LoadPageParams, type Locale, type Localizations, type PageAssignmentParams, type PageType, type PublicEnv, type RootRouteData, type RouteLoaderArgs,
|
|
346
|
+
export { type AllCacheOptions, type BasicInput, type ComponentLoaderArgs, type CreateWeaverseClientArgs, type FetchProjectPayload, type FetchProjectRequestBody, type FetchWithCacheOptions, type HeadingInput, type HeadingInputType, type HydrogenComponent, type HydrogenComponentData, type HydrogenComponentLoaderFunction, type HydrogenComponentPresets, type HydrogenComponentProps, type HydrogenComponentSchema, type HydrogenElement, type HydrogenPageAssignment, type HydrogenPageConfigs, type HydrogenPageData, type HydrogenProjectConfig, type HydrogenProjectType, type HydrogenThemeEnv, type HydrogenThemeInfo, type HydrogenThemeSchema, type HydrogenThemeSettings, type HydrogenToolbarAction, type I18nLocale, type InspectorGroup, type LoadPageParams, type Locale, type Localizations, type PageAssignmentParams, type PageType, type PublicEnv, type RootRouteData, type RouteLoaderArgs, type WeaverseArticle, type WeaverseBlog, WeaverseClient, type WeaverseClientArgs, type WeaverseCollection, WeaverseHydrogen, WeaverseHydrogenItem, type WeaverseHydrogenParams, WeaverseHydrogenRoot, type WeaverseHydrogenRootProps, type WeaverseInternal, type WeaverseLoaderData, type WeaverseLoaderRequestInfo, type WeaverseProduct, type WeaverseProjectConfigs, type WeaverseStorefrontData, type WeaverseStudioQueries, type WeaverseThemeConfigs, generateDataFromSchema, getRequestQueries, getSelectedProductOptions, getWeaverseConfigs, useThemeSettings, withWeaverse };
|
package/dist/index.js
CHANGED
|
@@ -30,15 +30,14 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
30
30
|
// src/index.ts
|
|
31
31
|
var src_exports = {};
|
|
32
32
|
__export(src_exports, {
|
|
33
|
-
ThemeSettingsStore: () => ThemeSettingsStore,
|
|
34
33
|
WeaverseClient: () => WeaverseClient,
|
|
35
34
|
WeaverseHydrogen: () => WeaverseHydrogen,
|
|
36
35
|
WeaverseHydrogenItem: () => WeaverseHydrogenItem,
|
|
37
36
|
WeaverseHydrogenRoot: () => WeaverseHydrogenRoot,
|
|
37
|
+
generateDataFromSchema: () => generateDataFromSchema,
|
|
38
38
|
getRequestQueries: () => getRequestQueries,
|
|
39
39
|
getSelectedProductOptions: () => getSelectedProductOptions,
|
|
40
40
|
getWeaverseConfigs: () => getWeaverseConfigs,
|
|
41
|
-
registerComponents: () => registerComponents,
|
|
42
41
|
useChildInstances: () => import_react14.useChildInstances,
|
|
43
42
|
useItemInstance: () => import_react14.useItemInstance,
|
|
44
43
|
useParentInstance: () => import_react14.useParentInstance,
|
|
@@ -49,114 +48,100 @@ __export(src_exports, {
|
|
|
49
48
|
module.exports = __toCommonJS(src_exports);
|
|
50
49
|
var import_react14 = require("@weaverse/react");
|
|
51
50
|
|
|
52
|
-
// src/
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
// src/components/main.tsx
|
|
63
|
-
var main_exports = {};
|
|
64
|
-
__export(main_exports, {
|
|
65
|
-
default: () => main_default,
|
|
66
|
-
schema: () => schema
|
|
67
|
-
});
|
|
68
|
-
var import_react = __toESM(require("react"));
|
|
69
|
-
var Main = (0, import_react.forwardRef)((props, ref) => {
|
|
70
|
-
let { children, dangerouslySetInnerHTML, ...rest } = props;
|
|
71
|
-
return (
|
|
72
|
-
// eslint-disable-next-line react/no-danger-with-children
|
|
73
|
-
/* @__PURE__ */ import_react.default.createElement(
|
|
74
|
-
"div",
|
|
75
|
-
{
|
|
76
|
-
ref,
|
|
77
|
-
...rest,
|
|
78
|
-
children,
|
|
79
|
-
dangerouslySetInnerHTML: children ? void 0 : dangerouslySetInnerHTML
|
|
80
|
-
}
|
|
81
|
-
)
|
|
51
|
+
// src/utils.ts
|
|
52
|
+
function getRequestQueries(request) {
|
|
53
|
+
let url = new URL(request.url);
|
|
54
|
+
return Array.from(url.searchParams.entries()).reduce(
|
|
55
|
+
(q, [k, v]) => {
|
|
56
|
+
q[k] = v === "true" ? true : v === "false" ? false : v;
|
|
57
|
+
return q;
|
|
58
|
+
},
|
|
59
|
+
{}
|
|
82
60
|
);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
61
|
+
}
|
|
62
|
+
function getWeaverseConfigs(request, env) {
|
|
63
|
+
let queries = getRequestQueries(request);
|
|
64
|
+
let {
|
|
65
|
+
WEAVERSE_PROJECT_ID,
|
|
66
|
+
WEAVERSE_API_KEY,
|
|
67
|
+
WEAVERSE_HOST,
|
|
68
|
+
PUBLIC_STORE_DOMAIN,
|
|
69
|
+
PUBLIC_STOREFRONT_API_TOKEN
|
|
70
|
+
} = env || {};
|
|
71
|
+
let envFromProcess = typeof process !== "undefined" && process.env || {};
|
|
72
|
+
let {
|
|
73
|
+
weaverseProjectId,
|
|
74
|
+
weaverseHost,
|
|
75
|
+
isDesignMode,
|
|
76
|
+
weaverseVersion,
|
|
77
|
+
weaverseApiKey
|
|
78
|
+
} = queries;
|
|
79
|
+
return {
|
|
80
|
+
projectId: weaverseProjectId || WEAVERSE_PROJECT_ID || envFromProcess.WEAVERSE_PROJECT_ID || "",
|
|
81
|
+
weaverseHost: weaverseHost || WEAVERSE_HOST || envFromProcess.WEAVERSE_HOST || "https://studio.weaverse.io",
|
|
82
|
+
weaverseApiKey: weaverseApiKey || WEAVERSE_API_KEY || envFromProcess.WEAVERSE_API_KEY || "",
|
|
83
|
+
weaverseVersion: weaverseVersion || "",
|
|
84
|
+
isDesignMode: isDesignMode || false,
|
|
85
|
+
publicEnv: {
|
|
86
|
+
PUBLIC_STORE_DOMAIN: PUBLIC_STORE_DOMAIN || "",
|
|
87
|
+
PUBLIC_STOREFRONT_API_TOKEN: PUBLIC_STOREFRONT_API_TOKEN || ""
|
|
102
88
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
function generateDataFromSchema({
|
|
92
|
+
inspector
|
|
93
|
+
}) {
|
|
94
|
+
let data = {};
|
|
95
|
+
if (inspector) {
|
|
96
|
+
for (let group of inspector) {
|
|
97
|
+
for (let input of group.inputs) {
|
|
98
|
+
let { name, defaultValue } = input;
|
|
99
|
+
if (name && defaultValue !== null && defaultValue !== void 0) {
|
|
100
|
+
data[name] = defaultValue;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
106
103
|
}
|
|
107
|
-
return weaverse;
|
|
108
104
|
}
|
|
109
|
-
return
|
|
105
|
+
return data;
|
|
110
106
|
}
|
|
111
|
-
function createWeaverseInstance(weaverseData, components) {
|
|
112
|
-
let { page, configs, project, pageAssignment } = weaverseData || {};
|
|
113
|
-
registerComponents(components);
|
|
114
|
-
registerComponents(defaultComponents);
|
|
115
|
-
return createCachedWeaverseInstance({
|
|
116
|
-
...configs,
|
|
117
|
-
data: page || {},
|
|
118
|
-
pageId: page?.id,
|
|
119
|
-
internal: { project, pageAssignment }
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
var ThemeProvider = (0, import_react3.createContext)(null);
|
|
123
|
-
ThemeProvider.displayName = "WeaverseThemeProvider";
|
|
124
107
|
|
|
125
|
-
// src/
|
|
126
|
-
var
|
|
127
|
-
var
|
|
108
|
+
// src/WeaverseHydrogenRoot.tsx
|
|
109
|
+
var import_react11 = require("@remix-run/react");
|
|
110
|
+
var import_react12 = require("@weaverse/react");
|
|
111
|
+
var import_react13 = __toESM(require("react"));
|
|
112
|
+
var import_react_error_boundary = require("react-error-boundary");
|
|
128
113
|
|
|
129
|
-
// src/
|
|
130
|
-
var
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
114
|
+
// src/Effect.tsx
|
|
115
|
+
var import_react7 = require("react");
|
|
116
|
+
|
|
117
|
+
// src/hooks/use-studio.ts
|
|
118
|
+
var import_react4 = require("@remix-run/react");
|
|
119
|
+
var import_react5 = require("@weaverse/react");
|
|
120
|
+
var import_react6 = require("react");
|
|
135
121
|
|
|
136
122
|
// src/hooks/use-theme-settings.ts
|
|
137
|
-
var
|
|
138
|
-
|
|
123
|
+
var import_react = require("@remix-run/react");
|
|
124
|
+
var import_react2 = require("@weaverse/react");
|
|
125
|
+
var import_react3 = require("react");
|
|
126
|
+
var ThemeSettingsStore = class {
|
|
127
|
+
settings = {};
|
|
139
128
|
listeners = [];
|
|
140
129
|
countries;
|
|
141
130
|
schema;
|
|
142
131
|
publicEnv;
|
|
143
132
|
constructor(data) {
|
|
144
133
|
let { theme, countries, schema: schema2, publicEnv } = data || {};
|
|
145
|
-
|
|
146
|
-
_ThemeSettingsStore.settings = {
|
|
147
|
-
...theme,
|
|
148
|
-
..._ThemeSettingsStore.settings
|
|
149
|
-
};
|
|
150
|
-
} else {
|
|
151
|
-
_ThemeSettingsStore.settings = theme || {};
|
|
152
|
-
}
|
|
134
|
+
this.settings = { ...theme };
|
|
153
135
|
this.countries = countries;
|
|
154
136
|
this.schema = schema2;
|
|
155
137
|
this.publicEnv = publicEnv;
|
|
138
|
+
if (import_react2.isBrowser) {
|
|
139
|
+
window.__weaverseThemeSettingsStore = this;
|
|
140
|
+
}
|
|
156
141
|
}
|
|
157
142
|
updateThemeSettings = (newSettings) => {
|
|
158
|
-
|
|
159
|
-
...
|
|
143
|
+
this.settings = {
|
|
144
|
+
...this.settings,
|
|
160
145
|
...newSettings
|
|
161
146
|
};
|
|
162
147
|
this.emitChange();
|
|
@@ -168,10 +153,10 @@ var ThemeSettingsStore = class _ThemeSettingsStore {
|
|
|
168
153
|
};
|
|
169
154
|
};
|
|
170
155
|
getSnapshot = () => {
|
|
171
|
-
return
|
|
156
|
+
return this.settings;
|
|
172
157
|
};
|
|
173
158
|
getServerSnapshot = () => {
|
|
174
|
-
return
|
|
159
|
+
return this.settings;
|
|
175
160
|
};
|
|
176
161
|
emitChange = () => {
|
|
177
162
|
for (let listener of this.listeners) {
|
|
@@ -179,9 +164,16 @@ var ThemeSettingsStore = class _ThemeSettingsStore {
|
|
|
179
164
|
}
|
|
180
165
|
};
|
|
181
166
|
};
|
|
167
|
+
function useThemeSettingsStore() {
|
|
168
|
+
let data = (0, import_react.useRouteLoaderData)("root");
|
|
169
|
+
if (import_react2.isBrowser && window.__weaverseThemeSettingsStore) {
|
|
170
|
+
return window.__weaverseThemeSettingsStore;
|
|
171
|
+
}
|
|
172
|
+
return new ThemeSettingsStore(data?.weaverseTheme);
|
|
173
|
+
}
|
|
182
174
|
function useThemeSettings() {
|
|
183
|
-
let themeSettingsStore =
|
|
184
|
-
let settings = (0,
|
|
175
|
+
let themeSettingsStore = useThemeSettingsStore();
|
|
176
|
+
let settings = (0, import_react3.useSyncExternalStore)(
|
|
185
177
|
themeSettingsStore.subscribe,
|
|
186
178
|
themeSettingsStore.getSnapshot,
|
|
187
179
|
themeSettingsStore.getServerSnapshot
|
|
@@ -189,21 +181,15 @@ function useThemeSettings() {
|
|
|
189
181
|
return settings;
|
|
190
182
|
}
|
|
191
183
|
|
|
192
|
-
// src/Effect.tsx
|
|
193
|
-
var import_react10 = require("react");
|
|
194
|
-
|
|
195
184
|
// src/hooks/use-studio.ts
|
|
196
|
-
var import_react7 = require("@remix-run/react");
|
|
197
|
-
var import_react8 = require("@weaverse/react");
|
|
198
|
-
var import_react9 = require("react");
|
|
199
185
|
function useStudio(weaverse) {
|
|
200
|
-
let { revalidate } = (0,
|
|
201
|
-
|
|
202
|
-
let { pathname, search } = (0,
|
|
203
|
-
let navigate = (0,
|
|
204
|
-
let themeSettingsStore =
|
|
186
|
+
let { revalidate } = (0, import_react4.useRevalidator)();
|
|
187
|
+
let navigation = (0, import_react4.useNavigation)();
|
|
188
|
+
let { pathname, search } = (0, import_react4.useLocation)();
|
|
189
|
+
let navigate = (0, import_react4.useNavigate)();
|
|
190
|
+
let themeSettingsStore = useThemeSettingsStore();
|
|
205
191
|
let { isDesignMode, weaverseHost, weaverseVersion } = weaverse;
|
|
206
|
-
(0,
|
|
192
|
+
(0, import_react6.useEffect)(() => {
|
|
207
193
|
if (navigation.state === "idle" && isDesignMode) {
|
|
208
194
|
weaverse.internal = {
|
|
209
195
|
...weaverse.internal,
|
|
@@ -212,21 +198,100 @@ function useStudio(weaverse) {
|
|
|
212
198
|
themeSettingsStore
|
|
213
199
|
};
|
|
214
200
|
let studioSrc = `${weaverseHost}/static/studio/hydrogen/index.js?v=${weaverseVersion}`;
|
|
215
|
-
(0,
|
|
216
|
-
window.weaverseStudio
|
|
201
|
+
(0, import_react5.loadScript)(studioSrc).then(() => {
|
|
202
|
+
window.weaverseStudio?.init(weaverse);
|
|
217
203
|
}).catch(console.error);
|
|
218
204
|
}
|
|
219
205
|
}, [pathname, search, navigation.state]);
|
|
220
206
|
}
|
|
221
207
|
|
|
222
208
|
// src/Effect.tsx
|
|
223
|
-
var WeaverseEffect = (0,
|
|
209
|
+
var WeaverseEffect = (0, import_react7.memo)(
|
|
224
210
|
({ context }) => {
|
|
225
211
|
useStudio(context);
|
|
226
212
|
return null;
|
|
227
213
|
}
|
|
228
214
|
);
|
|
229
215
|
|
|
216
|
+
// src/context.ts
|
|
217
|
+
var import_react9 = require("@weaverse/react");
|
|
218
|
+
var import_react10 = require("react");
|
|
219
|
+
|
|
220
|
+
// src/components/main.tsx
|
|
221
|
+
var main_exports = {};
|
|
222
|
+
__export(main_exports, {
|
|
223
|
+
default: () => main_default,
|
|
224
|
+
schema: () => schema
|
|
225
|
+
});
|
|
226
|
+
var import_react8 = __toESM(require("react"));
|
|
227
|
+
var Main = (0, import_react8.forwardRef)((props, ref) => {
|
|
228
|
+
let { children, dangerouslySetInnerHTML, ...rest } = props;
|
|
229
|
+
return (
|
|
230
|
+
// eslint-disable-next-line react/no-danger-with-children
|
|
231
|
+
/* @__PURE__ */ import_react8.default.createElement(
|
|
232
|
+
"div",
|
|
233
|
+
{
|
|
234
|
+
ref,
|
|
235
|
+
...rest,
|
|
236
|
+
children,
|
|
237
|
+
dangerouslySetInnerHTML: children ? void 0 : dangerouslySetInnerHTML
|
|
238
|
+
}
|
|
239
|
+
)
|
|
240
|
+
);
|
|
241
|
+
});
|
|
242
|
+
var main_default = Main;
|
|
243
|
+
var schema = {
|
|
244
|
+
type: "main",
|
|
245
|
+
title: "Main",
|
|
246
|
+
inspector: []
|
|
247
|
+
};
|
|
248
|
+
|
|
249
|
+
// src/components/index.ts
|
|
250
|
+
var defaultComponents = [main_exports];
|
|
251
|
+
|
|
252
|
+
// src/context.ts
|
|
253
|
+
function registerComponents(components) {
|
|
254
|
+
components.forEach((comp) => {
|
|
255
|
+
WeaverseHydrogen.registerElement({
|
|
256
|
+
type: comp?.schema?.type,
|
|
257
|
+
Component: comp?.default,
|
|
258
|
+
schema: comp?.schema,
|
|
259
|
+
loader: comp?.loader
|
|
260
|
+
});
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
function createCachedWeaverseInstance(params) {
|
|
264
|
+
if (import_react9.isBrowser) {
|
|
265
|
+
window.__weaverses = window.__weaverses || {};
|
|
266
|
+
let weaverse = window.__weaverses[params.pageId];
|
|
267
|
+
if (!weaverse) {
|
|
268
|
+
weaverse = new WeaverseHydrogen(params);
|
|
269
|
+
window.__weaverses[params.pageId] = weaverse;
|
|
270
|
+
}
|
|
271
|
+
if (weaverse?.isDesignMode) {
|
|
272
|
+
weaverse.requestInfo = params.requestInfo;
|
|
273
|
+
window.weaverseStudio?.refreshStudio(params);
|
|
274
|
+
}
|
|
275
|
+
return weaverse;
|
|
276
|
+
}
|
|
277
|
+
return new WeaverseHydrogen(params);
|
|
278
|
+
}
|
|
279
|
+
function createWeaverseInstance(weaverseData, components) {
|
|
280
|
+
let { page, configs, project, pageAssignment } = weaverseData || {};
|
|
281
|
+
registerComponents(components);
|
|
282
|
+
registerComponents(defaultComponents);
|
|
283
|
+
return createCachedWeaverseInstance({
|
|
284
|
+
...configs,
|
|
285
|
+
data: page || {},
|
|
286
|
+
pageId: page?.id,
|
|
287
|
+
internal: { project, pageAssignment }
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
var ThemeSettingsProvider = (0, import_react10.createContext)(
|
|
291
|
+
null
|
|
292
|
+
);
|
|
293
|
+
ThemeSettingsProvider.displayName = "WeaverseThemeSettingsProvider";
|
|
294
|
+
|
|
230
295
|
// src/WeaverseHydrogenRoot.tsx
|
|
231
296
|
var WeaverseHydrogenRoot = (0, import_react13.memo)(
|
|
232
297
|
({
|
|
@@ -258,9 +323,8 @@ function RenderRoot(props) {
|
|
|
258
323
|
}
|
|
259
324
|
function withWeaverse(Component) {
|
|
260
325
|
return (props) => {
|
|
261
|
-
let
|
|
262
|
-
|
|
263
|
-
return /* @__PURE__ */ import_react13.default.createElement(ThemeProvider.Provider, { value: themeSettingsStore }, /* @__PURE__ */ import_react13.default.createElement(Component, { ...props }));
|
|
326
|
+
let { settings } = useThemeSettingsStore();
|
|
327
|
+
return /* @__PURE__ */ import_react13.default.createElement(ThemeSettingsProvider.Provider, { value: settings }, /* @__PURE__ */ import_react13.default.createElement(Component, { ...props }));
|
|
264
328
|
};
|
|
265
329
|
}
|
|
266
330
|
function FallbackError({ error }) {
|
|
@@ -269,49 +333,6 @@ function FallbackError({ error }) {
|
|
|
269
333
|
|
|
270
334
|
// src/weaverse-client.ts
|
|
271
335
|
var import_hydrogen = require("@shopify/hydrogen");
|
|
272
|
-
|
|
273
|
-
// src/utils.ts
|
|
274
|
-
function getRequestQueries(request) {
|
|
275
|
-
let url = new URL(request.url);
|
|
276
|
-
return Array.from(url.searchParams.entries()).reduce(
|
|
277
|
-
(q, [k, v]) => {
|
|
278
|
-
q[k] = v === "true" ? true : v === "false" ? false : v;
|
|
279
|
-
return q;
|
|
280
|
-
},
|
|
281
|
-
{}
|
|
282
|
-
);
|
|
283
|
-
}
|
|
284
|
-
function getWeaverseConfigs(request, env) {
|
|
285
|
-
let queries = getRequestQueries(request);
|
|
286
|
-
let {
|
|
287
|
-
WEAVERSE_PROJECT_ID,
|
|
288
|
-
WEAVERSE_API_KEY,
|
|
289
|
-
WEAVERSE_HOST,
|
|
290
|
-
PUBLIC_STORE_DOMAIN,
|
|
291
|
-
PUBLIC_STOREFRONT_API_TOKEN
|
|
292
|
-
} = env || {};
|
|
293
|
-
let envFromProcess = typeof process !== "undefined" && process.env || {};
|
|
294
|
-
let {
|
|
295
|
-
weaverseProjectId,
|
|
296
|
-
weaverseHost,
|
|
297
|
-
isDesignMode,
|
|
298
|
-
weaverseVersion,
|
|
299
|
-
weaverseApiKey
|
|
300
|
-
} = queries;
|
|
301
|
-
return {
|
|
302
|
-
projectId: weaverseProjectId || WEAVERSE_PROJECT_ID || envFromProcess.WEAVERSE_PROJECT_ID || "",
|
|
303
|
-
weaverseHost: weaverseHost || WEAVERSE_HOST || envFromProcess.WEAVERSE_HOST || "https://studio.weaverse.io",
|
|
304
|
-
weaverseApiKey: weaverseApiKey || WEAVERSE_API_KEY || envFromProcess.WEAVERSE_API_KEY || "",
|
|
305
|
-
weaverseVersion: weaverseVersion || "",
|
|
306
|
-
isDesignMode: isDesignMode || false,
|
|
307
|
-
publicEnv: {
|
|
308
|
-
PUBLIC_STORE_DOMAIN: PUBLIC_STORE_DOMAIN || "",
|
|
309
|
-
PUBLIC_STOREFRONT_API_TOKEN: PUBLIC_STOREFRONT_API_TOKEN || ""
|
|
310
|
-
}
|
|
311
|
-
};
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
// src/weaverse-client.ts
|
|
315
336
|
var WeaverseClient = class {
|
|
316
337
|
API = "api/public";
|
|
317
338
|
basePageConfigs;
|
|
@@ -397,28 +418,20 @@ var WeaverseClient = class {
|
|
|
397
418
|
}
|
|
398
419
|
let url = `${weaverseHost}/${API}/project_configs`;
|
|
399
420
|
let res;
|
|
400
|
-
let body = JSON.stringify({
|
|
401
|
-
isDesignMode,
|
|
402
|
-
projectId
|
|
403
|
-
});
|
|
421
|
+
let body = JSON.stringify({ isDesignMode, projectId });
|
|
404
422
|
if (isDesignMode) {
|
|
405
|
-
res = await fetch(url, {
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
}).then((res2) => res2.json());
|
|
423
|
+
res = await fetch(url, { method: "POST", body }).then(
|
|
424
|
+
(res2) => res2.json()
|
|
425
|
+
);
|
|
409
426
|
} else {
|
|
410
427
|
res = await this.fetchWithCache(url, { method: "POST", strategy, body });
|
|
411
428
|
}
|
|
412
429
|
let data = res || {};
|
|
413
430
|
if (data?.theme && this.themeSchema?.inspector) {
|
|
414
431
|
let defaultThemeSettings = {};
|
|
415
|
-
this.themeSchema
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
defaultThemeSettings[name] = defaultValue;
|
|
419
|
-
}
|
|
420
|
-
});
|
|
421
|
-
});
|
|
432
|
+
if (this.themeSchema) {
|
|
433
|
+
defaultThemeSettings = generateDataFromSchema(this.themeSchema);
|
|
434
|
+
}
|
|
422
435
|
data.theme = {
|
|
423
436
|
...defaultThemeSettings,
|
|
424
437
|
...data.theme
|
|
@@ -549,16 +562,6 @@ function getSelectedProductOptions(request) {
|
|
|
549
562
|
}
|
|
550
563
|
|
|
551
564
|
// src/index.ts
|
|
552
|
-
var registerComponents = (components) => {
|
|
553
|
-
components.forEach((comp) => {
|
|
554
|
-
WeaverseHydrogen.registerElement({
|
|
555
|
-
type: comp?.schema?.type,
|
|
556
|
-
Component: comp?.default,
|
|
557
|
-
schema: comp?.schema,
|
|
558
|
-
loader: comp?.loader
|
|
559
|
-
});
|
|
560
|
-
});
|
|
561
|
-
};
|
|
562
565
|
var WeaverseHydrogen = class extends import_react14.Weaverse {
|
|
563
566
|
platformType = "shopify-hydrogen";
|
|
564
567
|
pageId;
|
|
@@ -578,32 +581,29 @@ var WeaverseHydrogenItem = class extends import_react14.WeaverseItemStore {
|
|
|
578
581
|
constructor(initialData, weaverse) {
|
|
579
582
|
super(initialData, weaverse);
|
|
580
583
|
let { data, ...rest } = initialData;
|
|
581
|
-
Object.assign(this._store, this.
|
|
584
|
+
Object.assign(this._store, this._schemaData, data, rest);
|
|
582
585
|
}
|
|
583
586
|
get Element() {
|
|
584
587
|
return super.Element;
|
|
585
588
|
}
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
}, {});
|
|
593
|
-
};
|
|
589
|
+
get _schemaData() {
|
|
590
|
+
if (this.Element.schema) {
|
|
591
|
+
return generateDataFromSchema(this.Element.schema);
|
|
592
|
+
}
|
|
593
|
+
return {};
|
|
594
|
+
}
|
|
594
595
|
};
|
|
595
596
|
import_react14.Weaverse.ItemConstructor = WeaverseHydrogenItem;
|
|
596
597
|
// Annotate the CommonJS export names for ESM import in node:
|
|
597
598
|
0 && (module.exports = {
|
|
598
|
-
ThemeSettingsStore,
|
|
599
599
|
WeaverseClient,
|
|
600
600
|
WeaverseHydrogen,
|
|
601
601
|
WeaverseHydrogenItem,
|
|
602
602
|
WeaverseHydrogenRoot,
|
|
603
|
+
generateDataFromSchema,
|
|
603
604
|
getRequestQueries,
|
|
604
605
|
getSelectedProductOptions,
|
|
605
606
|
getWeaverseConfigs,
|
|
606
|
-
registerComponents,
|
|
607
607
|
useChildInstances,
|
|
608
608
|
useItemInstance,
|
|
609
609
|
useParentInstance,
|
package/dist/index.mjs
CHANGED
|
@@ -6,122 +6,113 @@ var __export = (target, all) => {
|
|
|
6
6
|
|
|
7
7
|
// src/index.ts
|
|
8
8
|
import {
|
|
9
|
+
Weaverse,
|
|
10
|
+
WeaverseItemStore,
|
|
9
11
|
useChildInstances,
|
|
10
12
|
useItemInstance,
|
|
11
13
|
useParentInstance,
|
|
12
|
-
useWeaverse
|
|
13
|
-
Weaverse,
|
|
14
|
-
WeaverseItemStore
|
|
14
|
+
useWeaverse
|
|
15
15
|
} from "@weaverse/react";
|
|
16
16
|
|
|
17
|
-
// src/
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
// src/components/main.tsx
|
|
28
|
-
var main_exports = {};
|
|
29
|
-
__export(main_exports, {
|
|
30
|
-
default: () => main_default,
|
|
31
|
-
schema: () => schema
|
|
32
|
-
});
|
|
33
|
-
import React, { forwardRef } from "react";
|
|
34
|
-
var Main = forwardRef((props, ref) => {
|
|
35
|
-
let { children, dangerouslySetInnerHTML, ...rest } = props;
|
|
36
|
-
return (
|
|
37
|
-
// eslint-disable-next-line react/no-danger-with-children
|
|
38
|
-
/* @__PURE__ */ React.createElement(
|
|
39
|
-
"div",
|
|
40
|
-
{
|
|
41
|
-
ref,
|
|
42
|
-
...rest,
|
|
43
|
-
children,
|
|
44
|
-
dangerouslySetInnerHTML: children ? void 0 : dangerouslySetInnerHTML
|
|
45
|
-
}
|
|
46
|
-
)
|
|
17
|
+
// src/utils.ts
|
|
18
|
+
function getRequestQueries(request) {
|
|
19
|
+
let url = new URL(request.url);
|
|
20
|
+
return Array.from(url.searchParams.entries()).reduce(
|
|
21
|
+
(q, [k, v]) => {
|
|
22
|
+
q[k] = v === "true" ? true : v === "false" ? false : v;
|
|
23
|
+
return q;
|
|
24
|
+
},
|
|
25
|
+
{}
|
|
47
26
|
);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
27
|
+
}
|
|
28
|
+
function getWeaverseConfigs(request, env) {
|
|
29
|
+
let queries = getRequestQueries(request);
|
|
30
|
+
let {
|
|
31
|
+
WEAVERSE_PROJECT_ID,
|
|
32
|
+
WEAVERSE_API_KEY,
|
|
33
|
+
WEAVERSE_HOST,
|
|
34
|
+
PUBLIC_STORE_DOMAIN,
|
|
35
|
+
PUBLIC_STOREFRONT_API_TOKEN
|
|
36
|
+
} = env || {};
|
|
37
|
+
let envFromProcess = typeof process !== "undefined" && process.env || {};
|
|
38
|
+
let {
|
|
39
|
+
weaverseProjectId,
|
|
40
|
+
weaverseHost,
|
|
41
|
+
isDesignMode,
|
|
42
|
+
weaverseVersion,
|
|
43
|
+
weaverseApiKey
|
|
44
|
+
} = queries;
|
|
45
|
+
return {
|
|
46
|
+
projectId: weaverseProjectId || WEAVERSE_PROJECT_ID || envFromProcess.WEAVERSE_PROJECT_ID || "",
|
|
47
|
+
weaverseHost: weaverseHost || WEAVERSE_HOST || envFromProcess.WEAVERSE_HOST || "https://studio.weaverse.io",
|
|
48
|
+
weaverseApiKey: weaverseApiKey || WEAVERSE_API_KEY || envFromProcess.WEAVERSE_API_KEY || "",
|
|
49
|
+
weaverseVersion: weaverseVersion || "",
|
|
50
|
+
isDesignMode: isDesignMode || false,
|
|
51
|
+
publicEnv: {
|
|
52
|
+
PUBLIC_STORE_DOMAIN: PUBLIC_STORE_DOMAIN || "",
|
|
53
|
+
PUBLIC_STOREFRONT_API_TOKEN: PUBLIC_STOREFRONT_API_TOKEN || ""
|
|
67
54
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
function generateDataFromSchema({
|
|
58
|
+
inspector
|
|
59
|
+
}) {
|
|
60
|
+
let data = {};
|
|
61
|
+
if (inspector) {
|
|
62
|
+
for (let group of inspector) {
|
|
63
|
+
for (let input of group.inputs) {
|
|
64
|
+
let { name, defaultValue } = input;
|
|
65
|
+
if (name && defaultValue !== null && defaultValue !== void 0) {
|
|
66
|
+
data[name] = defaultValue;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
71
69
|
}
|
|
72
|
-
return weaverse;
|
|
73
70
|
}
|
|
74
|
-
return
|
|
71
|
+
return data;
|
|
75
72
|
}
|
|
76
|
-
function createWeaverseInstance(weaverseData, components) {
|
|
77
|
-
let { page, configs, project, pageAssignment } = weaverseData || {};
|
|
78
|
-
registerComponents(components);
|
|
79
|
-
registerComponents(defaultComponents);
|
|
80
|
-
return createCachedWeaverseInstance({
|
|
81
|
-
...configs,
|
|
82
|
-
data: page || {},
|
|
83
|
-
pageId: page?.id,
|
|
84
|
-
internal: { project, pageAssignment }
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
var ThemeProvider = createContext(null);
|
|
88
|
-
ThemeProvider.displayName = "WeaverseThemeProvider";
|
|
89
73
|
|
|
90
|
-
// src/
|
|
91
|
-
import {
|
|
92
|
-
import {
|
|
74
|
+
// src/WeaverseHydrogenRoot.tsx
|
|
75
|
+
import { Await, useLoaderData } from "@remix-run/react";
|
|
76
|
+
import { WeaverseRoot } from "@weaverse/react";
|
|
77
|
+
import React2, { memo as memo2, Suspense } from "react";
|
|
78
|
+
import { ErrorBoundary } from "react-error-boundary";
|
|
93
79
|
|
|
94
|
-
// src/
|
|
95
|
-
import {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
80
|
+
// src/Effect.tsx
|
|
81
|
+
import { memo } from "react";
|
|
82
|
+
|
|
83
|
+
// src/hooks/use-studio.ts
|
|
84
|
+
import {
|
|
85
|
+
useLocation,
|
|
86
|
+
useNavigate,
|
|
87
|
+
useNavigation,
|
|
88
|
+
useRevalidator
|
|
89
|
+
} from "@remix-run/react";
|
|
90
|
+
import { loadScript } from "@weaverse/react";
|
|
91
|
+
import { useEffect } from "react";
|
|
100
92
|
|
|
101
93
|
// src/hooks/use-theme-settings.ts
|
|
102
|
-
|
|
103
|
-
|
|
94
|
+
import { useRouteLoaderData } from "@remix-run/react";
|
|
95
|
+
import { isBrowser } from "@weaverse/react";
|
|
96
|
+
import { useSyncExternalStore } from "react";
|
|
97
|
+
var ThemeSettingsStore = class {
|
|
98
|
+
settings = {};
|
|
104
99
|
listeners = [];
|
|
105
100
|
countries;
|
|
106
101
|
schema;
|
|
107
102
|
publicEnv;
|
|
108
103
|
constructor(data) {
|
|
109
104
|
let { theme, countries, schema: schema2, publicEnv } = data || {};
|
|
110
|
-
|
|
111
|
-
_ThemeSettingsStore.settings = {
|
|
112
|
-
...theme,
|
|
113
|
-
..._ThemeSettingsStore.settings
|
|
114
|
-
};
|
|
115
|
-
} else {
|
|
116
|
-
_ThemeSettingsStore.settings = theme || {};
|
|
117
|
-
}
|
|
105
|
+
this.settings = { ...theme };
|
|
118
106
|
this.countries = countries;
|
|
119
107
|
this.schema = schema2;
|
|
120
108
|
this.publicEnv = publicEnv;
|
|
109
|
+
if (isBrowser) {
|
|
110
|
+
window.__weaverseThemeSettingsStore = this;
|
|
111
|
+
}
|
|
121
112
|
}
|
|
122
113
|
updateThemeSettings = (newSettings) => {
|
|
123
|
-
|
|
124
|
-
...
|
|
114
|
+
this.settings = {
|
|
115
|
+
...this.settings,
|
|
125
116
|
...newSettings
|
|
126
117
|
};
|
|
127
118
|
this.emitChange();
|
|
@@ -133,10 +124,10 @@ var ThemeSettingsStore = class _ThemeSettingsStore {
|
|
|
133
124
|
};
|
|
134
125
|
};
|
|
135
126
|
getSnapshot = () => {
|
|
136
|
-
return
|
|
127
|
+
return this.settings;
|
|
137
128
|
};
|
|
138
129
|
getServerSnapshot = () => {
|
|
139
|
-
return
|
|
130
|
+
return this.settings;
|
|
140
131
|
};
|
|
141
132
|
emitChange = () => {
|
|
142
133
|
for (let listener of this.listeners) {
|
|
@@ -144,8 +135,15 @@ var ThemeSettingsStore = class _ThemeSettingsStore {
|
|
|
144
135
|
}
|
|
145
136
|
};
|
|
146
137
|
};
|
|
138
|
+
function useThemeSettingsStore() {
|
|
139
|
+
let data = useRouteLoaderData("root");
|
|
140
|
+
if (isBrowser && window.__weaverseThemeSettingsStore) {
|
|
141
|
+
return window.__weaverseThemeSettingsStore;
|
|
142
|
+
}
|
|
143
|
+
return new ThemeSettingsStore(data?.weaverseTheme);
|
|
144
|
+
}
|
|
147
145
|
function useThemeSettings() {
|
|
148
|
-
let themeSettingsStore =
|
|
146
|
+
let themeSettingsStore = useThemeSettingsStore();
|
|
149
147
|
let settings = useSyncExternalStore(
|
|
150
148
|
themeSettingsStore.subscribe,
|
|
151
149
|
themeSettingsStore.getSnapshot,
|
|
@@ -154,24 +152,13 @@ function useThemeSettings() {
|
|
|
154
152
|
return settings;
|
|
155
153
|
}
|
|
156
154
|
|
|
157
|
-
// src/Effect.tsx
|
|
158
|
-
import { memo } from "react";
|
|
159
|
-
|
|
160
155
|
// src/hooks/use-studio.ts
|
|
161
|
-
import {
|
|
162
|
-
useLocation,
|
|
163
|
-
useNavigate,
|
|
164
|
-
useRevalidator,
|
|
165
|
-
useNavigation
|
|
166
|
-
} from "@remix-run/react";
|
|
167
|
-
import { loadScript } from "@weaverse/react";
|
|
168
|
-
import { useEffect } from "react";
|
|
169
156
|
function useStudio(weaverse) {
|
|
170
157
|
let { revalidate } = useRevalidator();
|
|
171
|
-
|
|
158
|
+
let navigation = useNavigation();
|
|
172
159
|
let { pathname, search } = useLocation();
|
|
173
160
|
let navigate = useNavigate();
|
|
174
|
-
let themeSettingsStore =
|
|
161
|
+
let themeSettingsStore = useThemeSettingsStore();
|
|
175
162
|
let { isDesignMode, weaverseHost, weaverseVersion } = weaverse;
|
|
176
163
|
useEffect(() => {
|
|
177
164
|
if (navigation.state === "idle" && isDesignMode) {
|
|
@@ -183,7 +170,7 @@ function useStudio(weaverse) {
|
|
|
183
170
|
};
|
|
184
171
|
let studioSrc = `${weaverseHost}/static/studio/hydrogen/index.js?v=${weaverseVersion}`;
|
|
185
172
|
loadScript(studioSrc).then(() => {
|
|
186
|
-
window.weaverseStudio
|
|
173
|
+
window.weaverseStudio?.init(weaverse);
|
|
187
174
|
}).catch(console.error);
|
|
188
175
|
}
|
|
189
176
|
}, [pathname, search, navigation.state]);
|
|
@@ -197,6 +184,85 @@ var WeaverseEffect = memo(
|
|
|
197
184
|
}
|
|
198
185
|
);
|
|
199
186
|
|
|
187
|
+
// src/context.ts
|
|
188
|
+
import { isBrowser as isBrowser2 } from "@weaverse/react";
|
|
189
|
+
import { createContext } from "react";
|
|
190
|
+
|
|
191
|
+
// src/components/main.tsx
|
|
192
|
+
var main_exports = {};
|
|
193
|
+
__export(main_exports, {
|
|
194
|
+
default: () => main_default,
|
|
195
|
+
schema: () => schema
|
|
196
|
+
});
|
|
197
|
+
import React, { forwardRef } from "react";
|
|
198
|
+
var Main = forwardRef((props, ref) => {
|
|
199
|
+
let { children, dangerouslySetInnerHTML, ...rest } = props;
|
|
200
|
+
return (
|
|
201
|
+
// eslint-disable-next-line react/no-danger-with-children
|
|
202
|
+
/* @__PURE__ */ React.createElement(
|
|
203
|
+
"div",
|
|
204
|
+
{
|
|
205
|
+
ref,
|
|
206
|
+
...rest,
|
|
207
|
+
children,
|
|
208
|
+
dangerouslySetInnerHTML: children ? void 0 : dangerouslySetInnerHTML
|
|
209
|
+
}
|
|
210
|
+
)
|
|
211
|
+
);
|
|
212
|
+
});
|
|
213
|
+
var main_default = Main;
|
|
214
|
+
var schema = {
|
|
215
|
+
type: "main",
|
|
216
|
+
title: "Main",
|
|
217
|
+
inspector: []
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
// src/components/index.ts
|
|
221
|
+
var defaultComponents = [main_exports];
|
|
222
|
+
|
|
223
|
+
// src/context.ts
|
|
224
|
+
function registerComponents(components) {
|
|
225
|
+
components.forEach((comp) => {
|
|
226
|
+
WeaverseHydrogen.registerElement({
|
|
227
|
+
type: comp?.schema?.type,
|
|
228
|
+
Component: comp?.default,
|
|
229
|
+
schema: comp?.schema,
|
|
230
|
+
loader: comp?.loader
|
|
231
|
+
});
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
function createCachedWeaverseInstance(params) {
|
|
235
|
+
if (isBrowser2) {
|
|
236
|
+
window.__weaverses = window.__weaverses || {};
|
|
237
|
+
let weaverse = window.__weaverses[params.pageId];
|
|
238
|
+
if (!weaverse) {
|
|
239
|
+
weaverse = new WeaverseHydrogen(params);
|
|
240
|
+
window.__weaverses[params.pageId] = weaverse;
|
|
241
|
+
}
|
|
242
|
+
if (weaverse?.isDesignMode) {
|
|
243
|
+
weaverse.requestInfo = params.requestInfo;
|
|
244
|
+
window.weaverseStudio?.refreshStudio(params);
|
|
245
|
+
}
|
|
246
|
+
return weaverse;
|
|
247
|
+
}
|
|
248
|
+
return new WeaverseHydrogen(params);
|
|
249
|
+
}
|
|
250
|
+
function createWeaverseInstance(weaverseData, components) {
|
|
251
|
+
let { page, configs, project, pageAssignment } = weaverseData || {};
|
|
252
|
+
registerComponents(components);
|
|
253
|
+
registerComponents(defaultComponents);
|
|
254
|
+
return createCachedWeaverseInstance({
|
|
255
|
+
...configs,
|
|
256
|
+
data: page || {},
|
|
257
|
+
pageId: page?.id,
|
|
258
|
+
internal: { project, pageAssignment }
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
var ThemeSettingsProvider = createContext(
|
|
262
|
+
null
|
|
263
|
+
);
|
|
264
|
+
ThemeSettingsProvider.displayName = "WeaverseThemeSettingsProvider";
|
|
265
|
+
|
|
200
266
|
// src/WeaverseHydrogenRoot.tsx
|
|
201
267
|
var WeaverseHydrogenRoot = memo2(
|
|
202
268
|
({
|
|
@@ -228,9 +294,8 @@ function RenderRoot(props) {
|
|
|
228
294
|
}
|
|
229
295
|
function withWeaverse(Component) {
|
|
230
296
|
return (props) => {
|
|
231
|
-
let
|
|
232
|
-
|
|
233
|
-
return /* @__PURE__ */ React2.createElement(ThemeProvider.Provider, { value: themeSettingsStore }, /* @__PURE__ */ React2.createElement(Component, { ...props }));
|
|
297
|
+
let { settings } = useThemeSettingsStore();
|
|
298
|
+
return /* @__PURE__ */ React2.createElement(ThemeSettingsProvider.Provider, { value: settings }, /* @__PURE__ */ React2.createElement(Component, { ...props }));
|
|
234
299
|
};
|
|
235
300
|
}
|
|
236
301
|
function FallbackError({ error }) {
|
|
@@ -239,49 +304,6 @@ function FallbackError({ error }) {
|
|
|
239
304
|
|
|
240
305
|
// src/weaverse-client.ts
|
|
241
306
|
import { createWithCache, generateCacheControlHeader } from "@shopify/hydrogen";
|
|
242
|
-
|
|
243
|
-
// src/utils.ts
|
|
244
|
-
function getRequestQueries(request) {
|
|
245
|
-
let url = new URL(request.url);
|
|
246
|
-
return Array.from(url.searchParams.entries()).reduce(
|
|
247
|
-
(q, [k, v]) => {
|
|
248
|
-
q[k] = v === "true" ? true : v === "false" ? false : v;
|
|
249
|
-
return q;
|
|
250
|
-
},
|
|
251
|
-
{}
|
|
252
|
-
);
|
|
253
|
-
}
|
|
254
|
-
function getWeaverseConfigs(request, env) {
|
|
255
|
-
let queries = getRequestQueries(request);
|
|
256
|
-
let {
|
|
257
|
-
WEAVERSE_PROJECT_ID,
|
|
258
|
-
WEAVERSE_API_KEY,
|
|
259
|
-
WEAVERSE_HOST,
|
|
260
|
-
PUBLIC_STORE_DOMAIN,
|
|
261
|
-
PUBLIC_STOREFRONT_API_TOKEN
|
|
262
|
-
} = env || {};
|
|
263
|
-
let envFromProcess = typeof process !== "undefined" && process.env || {};
|
|
264
|
-
let {
|
|
265
|
-
weaverseProjectId,
|
|
266
|
-
weaverseHost,
|
|
267
|
-
isDesignMode,
|
|
268
|
-
weaverseVersion,
|
|
269
|
-
weaverseApiKey
|
|
270
|
-
} = queries;
|
|
271
|
-
return {
|
|
272
|
-
projectId: weaverseProjectId || WEAVERSE_PROJECT_ID || envFromProcess.WEAVERSE_PROJECT_ID || "",
|
|
273
|
-
weaverseHost: weaverseHost || WEAVERSE_HOST || envFromProcess.WEAVERSE_HOST || "https://studio.weaverse.io",
|
|
274
|
-
weaverseApiKey: weaverseApiKey || WEAVERSE_API_KEY || envFromProcess.WEAVERSE_API_KEY || "",
|
|
275
|
-
weaverseVersion: weaverseVersion || "",
|
|
276
|
-
isDesignMode: isDesignMode || false,
|
|
277
|
-
publicEnv: {
|
|
278
|
-
PUBLIC_STORE_DOMAIN: PUBLIC_STORE_DOMAIN || "",
|
|
279
|
-
PUBLIC_STOREFRONT_API_TOKEN: PUBLIC_STOREFRONT_API_TOKEN || ""
|
|
280
|
-
}
|
|
281
|
-
};
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
// src/weaverse-client.ts
|
|
285
307
|
var WeaverseClient = class {
|
|
286
308
|
API = "api/public";
|
|
287
309
|
basePageConfigs;
|
|
@@ -367,28 +389,20 @@ var WeaverseClient = class {
|
|
|
367
389
|
}
|
|
368
390
|
let url = `${weaverseHost}/${API}/project_configs`;
|
|
369
391
|
let res;
|
|
370
|
-
let body = JSON.stringify({
|
|
371
|
-
isDesignMode,
|
|
372
|
-
projectId
|
|
373
|
-
});
|
|
392
|
+
let body = JSON.stringify({ isDesignMode, projectId });
|
|
374
393
|
if (isDesignMode) {
|
|
375
|
-
res = await fetch(url, {
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
}).then((res2) => res2.json());
|
|
394
|
+
res = await fetch(url, { method: "POST", body }).then(
|
|
395
|
+
(res2) => res2.json()
|
|
396
|
+
);
|
|
379
397
|
} else {
|
|
380
398
|
res = await this.fetchWithCache(url, { method: "POST", strategy, body });
|
|
381
399
|
}
|
|
382
400
|
let data = res || {};
|
|
383
401
|
if (data?.theme && this.themeSchema?.inspector) {
|
|
384
402
|
let defaultThemeSettings = {};
|
|
385
|
-
this.themeSchema
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
defaultThemeSettings[name] = defaultValue;
|
|
389
|
-
}
|
|
390
|
-
});
|
|
391
|
-
});
|
|
403
|
+
if (this.themeSchema) {
|
|
404
|
+
defaultThemeSettings = generateDataFromSchema(this.themeSchema);
|
|
405
|
+
}
|
|
392
406
|
data.theme = {
|
|
393
407
|
...defaultThemeSettings,
|
|
394
408
|
...data.theme
|
|
@@ -519,16 +533,6 @@ function getSelectedProductOptions(request) {
|
|
|
519
533
|
}
|
|
520
534
|
|
|
521
535
|
// src/index.ts
|
|
522
|
-
var registerComponents = (components) => {
|
|
523
|
-
components.forEach((comp) => {
|
|
524
|
-
WeaverseHydrogen.registerElement({
|
|
525
|
-
type: comp?.schema?.type,
|
|
526
|
-
Component: comp?.default,
|
|
527
|
-
schema: comp?.schema,
|
|
528
|
-
loader: comp?.loader
|
|
529
|
-
});
|
|
530
|
-
});
|
|
531
|
-
};
|
|
532
536
|
var WeaverseHydrogen = class extends Weaverse {
|
|
533
537
|
platformType = "shopify-hydrogen";
|
|
534
538
|
pageId;
|
|
@@ -548,31 +552,28 @@ var WeaverseHydrogenItem = class extends WeaverseItemStore {
|
|
|
548
552
|
constructor(initialData, weaverse) {
|
|
549
553
|
super(initialData, weaverse);
|
|
550
554
|
let { data, ...rest } = initialData;
|
|
551
|
-
Object.assign(this._store, this.
|
|
555
|
+
Object.assign(this._store, this._schemaData, data, rest);
|
|
552
556
|
}
|
|
553
557
|
get Element() {
|
|
554
558
|
return super.Element;
|
|
555
559
|
}
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
}, {});
|
|
563
|
-
};
|
|
560
|
+
get _schemaData() {
|
|
561
|
+
if (this.Element.schema) {
|
|
562
|
+
return generateDataFromSchema(this.Element.schema);
|
|
563
|
+
}
|
|
564
|
+
return {};
|
|
565
|
+
}
|
|
564
566
|
};
|
|
565
567
|
Weaverse.ItemConstructor = WeaverseHydrogenItem;
|
|
566
568
|
export {
|
|
567
|
-
ThemeSettingsStore,
|
|
568
569
|
WeaverseClient,
|
|
569
570
|
WeaverseHydrogen,
|
|
570
571
|
WeaverseHydrogenItem,
|
|
571
572
|
WeaverseHydrogenRoot,
|
|
573
|
+
generateDataFromSchema,
|
|
572
574
|
getRequestQueries,
|
|
573
575
|
getSelectedProductOptions,
|
|
574
576
|
getWeaverseConfigs,
|
|
575
|
-
registerComponents,
|
|
576
577
|
useChildInstances,
|
|
577
578
|
useItemInstance,
|
|
578
579
|
useParentInstance,
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@weaverse/hydrogen",
|
|
3
3
|
"author": "Weaverse Team",
|
|
4
4
|
"description": "Components, hooks, and utilities for building Shopify Hydrogen websites with Weaverse",
|
|
5
|
-
"version": "3.1.
|
|
5
|
+
"version": "3.1.2",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"main": "dist/index.js",
|
|
8
8
|
"typings": "dist/index.d.ts",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"singleQuote": true
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@weaverse/react": "3.1.
|
|
36
|
+
"@weaverse/react": "3.1.2",
|
|
37
37
|
"react-error-boundary": "^4.0.13"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|