@weaverse/hydrogen 1.0.55 → 1.0.57
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 +99 -26
- package/dist/index.d.ts +99 -26
- package/dist/index.js +49 -35
- package/dist/index.mjs +49 -35
- package/package.json +2 -2
package/dist/index.d.mts
CHANGED
|
@@ -3,6 +3,22 @@ import { LoaderArgs, AppLoadContext } from '@shopify/remix-oxygen';
|
|
|
3
3
|
import { ElementData, ElementSchema, BasicInput, WeaverseElement, Weaverse, WeaverseItemStore } from '@weaverse/react';
|
|
4
4
|
export * from '@weaverse/react';
|
|
5
5
|
|
|
6
|
+
declare let STORE_PAGES: {
|
|
7
|
+
INDEX: string;
|
|
8
|
+
PRODUCT: string;
|
|
9
|
+
COLLECTION: string;
|
|
10
|
+
COLLECTION_LIST: string;
|
|
11
|
+
PAGE: string;
|
|
12
|
+
BLOG: string;
|
|
13
|
+
ARTICLE: string;
|
|
14
|
+
CART: string;
|
|
15
|
+
CUSTOMER: string;
|
|
16
|
+
NOT_FOUND: string;
|
|
17
|
+
PASSWORD: string;
|
|
18
|
+
SEARCH: string;
|
|
19
|
+
CUSTOM: string;
|
|
20
|
+
};
|
|
21
|
+
|
|
6
22
|
type TODO = any;
|
|
7
23
|
declare module '@shopify/remix-oxygen' {
|
|
8
24
|
interface AppLoadContext {
|
|
@@ -28,8 +44,7 @@ interface HydrogenComponentData extends Omit<ElementData, 'childIds' | 'css'> {
|
|
|
28
44
|
children: {
|
|
29
45
|
id: string;
|
|
30
46
|
}[];
|
|
31
|
-
|
|
32
|
-
data: Record<string, unknown>;
|
|
47
|
+
data: Record<string, any>;
|
|
33
48
|
}
|
|
34
49
|
interface HydrogenComponentSchema extends Omit<ElementSchema, 'parentTypes' | 'flags' | 'inspector' | 'gridSize' | 'childElements' | 'catalog'> {
|
|
35
50
|
childTypes?: string[];
|
|
@@ -45,21 +60,40 @@ interface HydrogenComponentProps<L = any> extends WeaverseElement {
|
|
|
45
60
|
loaderData?: L;
|
|
46
61
|
children?: React.JSX.Element[];
|
|
47
62
|
}
|
|
48
|
-
|
|
63
|
+
type WeaverseLoaderRequestInfo = {
|
|
64
|
+
params: any;
|
|
65
|
+
pathname: string;
|
|
66
|
+
search: string;
|
|
67
|
+
};
|
|
68
|
+
interface WeaverseHydrogen extends Omit<Weaverse, 'itemInstances' | 'elementInstances' | 'registerElement' | 'data'> {
|
|
49
69
|
itemInstances: Map<string | number, HydrogenComponentInstance>;
|
|
50
70
|
elementInstances: Map<string, HydrogenElement>;
|
|
51
71
|
registerElement(element: HydrogenElement): void;
|
|
52
72
|
internal: WeaverseInternal;
|
|
73
|
+
data: WeaverseStorefrontData;
|
|
74
|
+
requestInfo: WeaverseLoaderRequestInfo;
|
|
53
75
|
}
|
|
76
|
+
type WeaverseStorefrontData = {
|
|
77
|
+
id?: string;
|
|
78
|
+
rootId: string;
|
|
79
|
+
name: string;
|
|
80
|
+
items: HydrogenComponentData[];
|
|
81
|
+
};
|
|
82
|
+
type HydrogenProjectConfig = {
|
|
83
|
+
theme: Record<string, any>;
|
|
84
|
+
};
|
|
85
|
+
type HydrogenProjectType = {
|
|
86
|
+
id: string;
|
|
87
|
+
weaverseShopId: string;
|
|
88
|
+
name: string;
|
|
89
|
+
config: HydrogenProjectConfig;
|
|
90
|
+
[key: string]: any;
|
|
91
|
+
};
|
|
54
92
|
type WeaverseInternal = {
|
|
55
93
|
themeSchema: HydrogenThemeSchema;
|
|
56
|
-
pageAssignment:
|
|
57
|
-
project:
|
|
58
|
-
|
|
59
|
-
theme: Record<string, any>;
|
|
60
|
-
};
|
|
61
|
-
[key: string]: any;
|
|
62
|
-
};
|
|
94
|
+
pageAssignment: HydrogenPageAssignment;
|
|
95
|
+
project: HydrogenProjectType;
|
|
96
|
+
navigate: NavigateFunction;
|
|
63
97
|
};
|
|
64
98
|
type HydrogenComponentPresets = {
|
|
65
99
|
type: string;
|
|
@@ -86,18 +120,56 @@ type HydrogenPageConfigs = {
|
|
|
86
120
|
weaverseHost: string;
|
|
87
121
|
version?: string;
|
|
88
122
|
isDesignMode?: boolean;
|
|
123
|
+
requestInfo: WeaverseLoaderRequestInfo;
|
|
89
124
|
[key: string]: any;
|
|
90
125
|
};
|
|
91
|
-
|
|
126
|
+
type HydrogenPageAssignment = {
|
|
127
|
+
projectId: string;
|
|
128
|
+
type: PageType;
|
|
129
|
+
handle: string;
|
|
130
|
+
locale: string;
|
|
131
|
+
};
|
|
132
|
+
interface WeaverseLoaderData {
|
|
92
133
|
configs: HydrogenPageConfigs;
|
|
93
|
-
page:
|
|
94
|
-
project:
|
|
95
|
-
pageAssignment:
|
|
134
|
+
page: HydrogenPageData;
|
|
135
|
+
project: HydrogenProjectType;
|
|
136
|
+
pageAssignment: HydrogenPageAssignment;
|
|
96
137
|
}
|
|
138
|
+
type HydrogenPageData = {
|
|
139
|
+
id: string;
|
|
140
|
+
name: string;
|
|
141
|
+
rootId: string;
|
|
142
|
+
items: HydrogenComponentData[];
|
|
143
|
+
[key: string]: any;
|
|
144
|
+
};
|
|
145
|
+
type RelativeRoutingType = 'route' | 'path';
|
|
146
|
+
type To = string | Partial<Path>;
|
|
147
|
+
type Path = {
|
|
148
|
+
/**
|
|
149
|
+
* A URL pathname, beginning with a /.
|
|
150
|
+
*/
|
|
151
|
+
pathname: string;
|
|
152
|
+
/**
|
|
153
|
+
* A URL search string, beginning with a ?.
|
|
154
|
+
*/
|
|
155
|
+
search: string;
|
|
156
|
+
/**
|
|
157
|
+
* A URL fragment identifier, beginning with a #.
|
|
158
|
+
*/
|
|
159
|
+
hash: string;
|
|
160
|
+
};
|
|
161
|
+
type NavigateOptions = {
|
|
162
|
+
replace?: boolean;
|
|
163
|
+
state?: any;
|
|
164
|
+
preventScrollReset?: boolean;
|
|
165
|
+
relative?: RelativeRoutingType;
|
|
166
|
+
};
|
|
167
|
+
type NavigateFunction = (to: To, options?: NavigateOptions) => void;
|
|
97
168
|
interface WeaverseHydrogenRootProps {
|
|
98
|
-
weaverseData:
|
|
169
|
+
weaverseData: WeaverseLoaderData;
|
|
99
170
|
components: HydrogenComponent[];
|
|
100
171
|
themeSchema: HydrogenThemeSchema;
|
|
172
|
+
navigate: NavigateFunction;
|
|
101
173
|
}
|
|
102
174
|
type HydrogenThemeInfo = {
|
|
103
175
|
name: string;
|
|
@@ -110,26 +182,27 @@ interface HydrogenThemeSchema {
|
|
|
110
182
|
info: HydrogenThemeInfo;
|
|
111
183
|
inspector: InspectorGroup[];
|
|
112
184
|
}
|
|
113
|
-
type PageType =
|
|
185
|
+
type PageType = keyof typeof STORE_PAGES;
|
|
114
186
|
type WeaverseLoaderConfigs = {
|
|
115
|
-
|
|
116
|
-
|
|
187
|
+
type: PageType;
|
|
188
|
+
locale?: string;
|
|
117
189
|
handle?: string;
|
|
118
190
|
};
|
|
119
191
|
|
|
120
|
-
declare function useThemeSettings(): any[];
|
|
192
|
+
declare function useThemeSettings(): (Record<string, any> | ((newSettings: any) => void))[];
|
|
121
193
|
|
|
194
|
+
type FetchWithServerCacheParams = {
|
|
195
|
+
url: string;
|
|
196
|
+
options?: RequestInit | Request;
|
|
197
|
+
context: AppLoadContext;
|
|
198
|
+
};
|
|
122
199
|
/**
|
|
123
200
|
* Fetch with server cache requires a storefront.cache instance which is Cloudflare Cache and a waitUntil function, otherwise it will just fetch the url.
|
|
124
201
|
*/
|
|
125
|
-
declare
|
|
126
|
-
url: string;
|
|
127
|
-
options?: Request | RequestInit | undefined;
|
|
128
|
-
context: AppLoadContext;
|
|
129
|
-
}) => Promise<any>;
|
|
202
|
+
declare function fetchWithServerCache(params: FetchWithServerCacheParams): Promise<any>;
|
|
130
203
|
|
|
131
|
-
declare function weaverseLoader(args: LoaderArgs, components: HydrogenComponent[], loaderConfigs?: WeaverseLoaderConfigs): Promise<
|
|
204
|
+
declare function weaverseLoader(args: LoaderArgs, components: HydrogenComponent[], loaderConfigs?: WeaverseLoaderConfigs): Promise<WeaverseLoaderData | null>;
|
|
132
205
|
|
|
133
206
|
declare function WeaverseHydrogenRoot(props: WeaverseHydrogenRootProps): React.JSX.Element;
|
|
134
207
|
|
|
135
|
-
export { HydrogenComponent, HydrogenComponentData, HydrogenComponentInstance, HydrogenComponentPresets, HydrogenComponentProps, HydrogenComponentSchema, HydrogenElement, HydrogenPageConfigs, HydrogenPageData, HydrogenThemeInfo, HydrogenThemeSchema, InspectorGroup, PageType, TODO, WeaverseHydrogen, WeaverseHydrogenRoot, WeaverseHydrogenRootProps, WeaverseInternal, WeaverseLoaderArgs, WeaverseLoaderConfigs, fetchWithServerCache, useThemeSettings, weaverseLoader };
|
|
208
|
+
export { HydrogenComponent, HydrogenComponentData, HydrogenComponentInstance, HydrogenComponentPresets, HydrogenComponentProps, HydrogenComponentSchema, HydrogenElement, HydrogenPageAssignment, HydrogenPageConfigs, HydrogenPageData, HydrogenProjectConfig, HydrogenProjectType, HydrogenThemeInfo, HydrogenThemeSchema, InspectorGroup, NavigateFunction, PageType, TODO, WeaverseHydrogen, WeaverseHydrogenRoot, WeaverseHydrogenRootProps, WeaverseInternal, WeaverseLoaderArgs, WeaverseLoaderConfigs, WeaverseLoaderData, WeaverseLoaderRequestInfo, WeaverseStorefrontData, fetchWithServerCache, useThemeSettings, weaverseLoader };
|
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,22 @@ import { LoaderArgs, AppLoadContext } from '@shopify/remix-oxygen';
|
|
|
3
3
|
import { ElementData, ElementSchema, BasicInput, WeaverseElement, Weaverse, WeaverseItemStore } from '@weaverse/react';
|
|
4
4
|
export * from '@weaverse/react';
|
|
5
5
|
|
|
6
|
+
declare let STORE_PAGES: {
|
|
7
|
+
INDEX: string;
|
|
8
|
+
PRODUCT: string;
|
|
9
|
+
COLLECTION: string;
|
|
10
|
+
COLLECTION_LIST: string;
|
|
11
|
+
PAGE: string;
|
|
12
|
+
BLOG: string;
|
|
13
|
+
ARTICLE: string;
|
|
14
|
+
CART: string;
|
|
15
|
+
CUSTOMER: string;
|
|
16
|
+
NOT_FOUND: string;
|
|
17
|
+
PASSWORD: string;
|
|
18
|
+
SEARCH: string;
|
|
19
|
+
CUSTOM: string;
|
|
20
|
+
};
|
|
21
|
+
|
|
6
22
|
type TODO = any;
|
|
7
23
|
declare module '@shopify/remix-oxygen' {
|
|
8
24
|
interface AppLoadContext {
|
|
@@ -28,8 +44,7 @@ interface HydrogenComponentData extends Omit<ElementData, 'childIds' | 'css'> {
|
|
|
28
44
|
children: {
|
|
29
45
|
id: string;
|
|
30
46
|
}[];
|
|
31
|
-
|
|
32
|
-
data: Record<string, unknown>;
|
|
47
|
+
data: Record<string, any>;
|
|
33
48
|
}
|
|
34
49
|
interface HydrogenComponentSchema extends Omit<ElementSchema, 'parentTypes' | 'flags' | 'inspector' | 'gridSize' | 'childElements' | 'catalog'> {
|
|
35
50
|
childTypes?: string[];
|
|
@@ -45,21 +60,40 @@ interface HydrogenComponentProps<L = any> extends WeaverseElement {
|
|
|
45
60
|
loaderData?: L;
|
|
46
61
|
children?: React.JSX.Element[];
|
|
47
62
|
}
|
|
48
|
-
|
|
63
|
+
type WeaverseLoaderRequestInfo = {
|
|
64
|
+
params: any;
|
|
65
|
+
pathname: string;
|
|
66
|
+
search: string;
|
|
67
|
+
};
|
|
68
|
+
interface WeaverseHydrogen extends Omit<Weaverse, 'itemInstances' | 'elementInstances' | 'registerElement' | 'data'> {
|
|
49
69
|
itemInstances: Map<string | number, HydrogenComponentInstance>;
|
|
50
70
|
elementInstances: Map<string, HydrogenElement>;
|
|
51
71
|
registerElement(element: HydrogenElement): void;
|
|
52
72
|
internal: WeaverseInternal;
|
|
73
|
+
data: WeaverseStorefrontData;
|
|
74
|
+
requestInfo: WeaverseLoaderRequestInfo;
|
|
53
75
|
}
|
|
76
|
+
type WeaverseStorefrontData = {
|
|
77
|
+
id?: string;
|
|
78
|
+
rootId: string;
|
|
79
|
+
name: string;
|
|
80
|
+
items: HydrogenComponentData[];
|
|
81
|
+
};
|
|
82
|
+
type HydrogenProjectConfig = {
|
|
83
|
+
theme: Record<string, any>;
|
|
84
|
+
};
|
|
85
|
+
type HydrogenProjectType = {
|
|
86
|
+
id: string;
|
|
87
|
+
weaverseShopId: string;
|
|
88
|
+
name: string;
|
|
89
|
+
config: HydrogenProjectConfig;
|
|
90
|
+
[key: string]: any;
|
|
91
|
+
};
|
|
54
92
|
type WeaverseInternal = {
|
|
55
93
|
themeSchema: HydrogenThemeSchema;
|
|
56
|
-
pageAssignment:
|
|
57
|
-
project:
|
|
58
|
-
|
|
59
|
-
theme: Record<string, any>;
|
|
60
|
-
};
|
|
61
|
-
[key: string]: any;
|
|
62
|
-
};
|
|
94
|
+
pageAssignment: HydrogenPageAssignment;
|
|
95
|
+
project: HydrogenProjectType;
|
|
96
|
+
navigate: NavigateFunction;
|
|
63
97
|
};
|
|
64
98
|
type HydrogenComponentPresets = {
|
|
65
99
|
type: string;
|
|
@@ -86,18 +120,56 @@ type HydrogenPageConfigs = {
|
|
|
86
120
|
weaverseHost: string;
|
|
87
121
|
version?: string;
|
|
88
122
|
isDesignMode?: boolean;
|
|
123
|
+
requestInfo: WeaverseLoaderRequestInfo;
|
|
89
124
|
[key: string]: any;
|
|
90
125
|
};
|
|
91
|
-
|
|
126
|
+
type HydrogenPageAssignment = {
|
|
127
|
+
projectId: string;
|
|
128
|
+
type: PageType;
|
|
129
|
+
handle: string;
|
|
130
|
+
locale: string;
|
|
131
|
+
};
|
|
132
|
+
interface WeaverseLoaderData {
|
|
92
133
|
configs: HydrogenPageConfigs;
|
|
93
|
-
page:
|
|
94
|
-
project:
|
|
95
|
-
pageAssignment:
|
|
134
|
+
page: HydrogenPageData;
|
|
135
|
+
project: HydrogenProjectType;
|
|
136
|
+
pageAssignment: HydrogenPageAssignment;
|
|
96
137
|
}
|
|
138
|
+
type HydrogenPageData = {
|
|
139
|
+
id: string;
|
|
140
|
+
name: string;
|
|
141
|
+
rootId: string;
|
|
142
|
+
items: HydrogenComponentData[];
|
|
143
|
+
[key: string]: any;
|
|
144
|
+
};
|
|
145
|
+
type RelativeRoutingType = 'route' | 'path';
|
|
146
|
+
type To = string | Partial<Path>;
|
|
147
|
+
type Path = {
|
|
148
|
+
/**
|
|
149
|
+
* A URL pathname, beginning with a /.
|
|
150
|
+
*/
|
|
151
|
+
pathname: string;
|
|
152
|
+
/**
|
|
153
|
+
* A URL search string, beginning with a ?.
|
|
154
|
+
*/
|
|
155
|
+
search: string;
|
|
156
|
+
/**
|
|
157
|
+
* A URL fragment identifier, beginning with a #.
|
|
158
|
+
*/
|
|
159
|
+
hash: string;
|
|
160
|
+
};
|
|
161
|
+
type NavigateOptions = {
|
|
162
|
+
replace?: boolean;
|
|
163
|
+
state?: any;
|
|
164
|
+
preventScrollReset?: boolean;
|
|
165
|
+
relative?: RelativeRoutingType;
|
|
166
|
+
};
|
|
167
|
+
type NavigateFunction = (to: To, options?: NavigateOptions) => void;
|
|
97
168
|
interface WeaverseHydrogenRootProps {
|
|
98
|
-
weaverseData:
|
|
169
|
+
weaverseData: WeaverseLoaderData;
|
|
99
170
|
components: HydrogenComponent[];
|
|
100
171
|
themeSchema: HydrogenThemeSchema;
|
|
172
|
+
navigate: NavigateFunction;
|
|
101
173
|
}
|
|
102
174
|
type HydrogenThemeInfo = {
|
|
103
175
|
name: string;
|
|
@@ -110,26 +182,27 @@ interface HydrogenThemeSchema {
|
|
|
110
182
|
info: HydrogenThemeInfo;
|
|
111
183
|
inspector: InspectorGroup[];
|
|
112
184
|
}
|
|
113
|
-
type PageType =
|
|
185
|
+
type PageType = keyof typeof STORE_PAGES;
|
|
114
186
|
type WeaverseLoaderConfigs = {
|
|
115
|
-
|
|
116
|
-
|
|
187
|
+
type: PageType;
|
|
188
|
+
locale?: string;
|
|
117
189
|
handle?: string;
|
|
118
190
|
};
|
|
119
191
|
|
|
120
|
-
declare function useThemeSettings(): any[];
|
|
192
|
+
declare function useThemeSettings(): (Record<string, any> | ((newSettings: any) => void))[];
|
|
121
193
|
|
|
194
|
+
type FetchWithServerCacheParams = {
|
|
195
|
+
url: string;
|
|
196
|
+
options?: RequestInit | Request;
|
|
197
|
+
context: AppLoadContext;
|
|
198
|
+
};
|
|
122
199
|
/**
|
|
123
200
|
* Fetch with server cache requires a storefront.cache instance which is Cloudflare Cache and a waitUntil function, otherwise it will just fetch the url.
|
|
124
201
|
*/
|
|
125
|
-
declare
|
|
126
|
-
url: string;
|
|
127
|
-
options?: Request | RequestInit | undefined;
|
|
128
|
-
context: AppLoadContext;
|
|
129
|
-
}) => Promise<any>;
|
|
202
|
+
declare function fetchWithServerCache(params: FetchWithServerCacheParams): Promise<any>;
|
|
130
203
|
|
|
131
|
-
declare function weaverseLoader(args: LoaderArgs, components: HydrogenComponent[], loaderConfigs?: WeaverseLoaderConfigs): Promise<
|
|
204
|
+
declare function weaverseLoader(args: LoaderArgs, components: HydrogenComponent[], loaderConfigs?: WeaverseLoaderConfigs): Promise<WeaverseLoaderData | null>;
|
|
132
205
|
|
|
133
206
|
declare function WeaverseHydrogenRoot(props: WeaverseHydrogenRootProps): React.JSX.Element;
|
|
134
207
|
|
|
135
|
-
export { HydrogenComponent, HydrogenComponentData, HydrogenComponentInstance, HydrogenComponentPresets, HydrogenComponentProps, HydrogenComponentSchema, HydrogenElement, HydrogenPageConfigs, HydrogenPageData, HydrogenThemeInfo, HydrogenThemeSchema, InspectorGroup, PageType, TODO, WeaverseHydrogen, WeaverseHydrogenRoot, WeaverseHydrogenRootProps, WeaverseInternal, WeaverseLoaderArgs, WeaverseLoaderConfigs, fetchWithServerCache, useThemeSettings, weaverseLoader };
|
|
208
|
+
export { HydrogenComponent, HydrogenComponentData, HydrogenComponentInstance, HydrogenComponentPresets, HydrogenComponentProps, HydrogenComponentSchema, HydrogenElement, HydrogenPageAssignment, HydrogenPageConfigs, HydrogenPageData, HydrogenProjectConfig, HydrogenProjectType, HydrogenThemeInfo, HydrogenThemeSchema, InspectorGroup, NavigateFunction, PageType, TODO, WeaverseHydrogen, WeaverseHydrogenRoot, WeaverseHydrogenRootProps, WeaverseInternal, WeaverseLoaderArgs, WeaverseLoaderConfigs, WeaverseLoaderData, WeaverseLoaderRequestInfo, WeaverseStorefrontData, fetchWithServerCache, useThemeSettings, weaverseLoader };
|
package/dist/index.js
CHANGED
|
@@ -45,7 +45,7 @@ var import_react = require("@weaverse/react");
|
|
|
45
45
|
function createCachedWeaverseInstance(init) {
|
|
46
46
|
if (import_react.isBrowser) {
|
|
47
47
|
window.__weaverses = window.__weaverses || {};
|
|
48
|
-
let pathname =
|
|
48
|
+
let { pathname } = init.requestInfo;
|
|
49
49
|
if (!window.__weaverses[pathname]) {
|
|
50
50
|
window.__weaverses[pathname] = new import_react.Weaverse(init);
|
|
51
51
|
}
|
|
@@ -57,7 +57,7 @@ function createWeaverseInstance(weaverseData, components) {
|
|
|
57
57
|
if (import_react.isBrowser) {
|
|
58
58
|
console.log("\u{1F4BF} Weaverse data", weaverseData);
|
|
59
59
|
}
|
|
60
|
-
let { page, configs
|
|
60
|
+
let { page, configs, project, pageAssignment } = weaverseData || {};
|
|
61
61
|
let weaverse = createCachedWeaverseInstance({
|
|
62
62
|
...configs,
|
|
63
63
|
data: page || {},
|
|
@@ -713,11 +713,13 @@ Weaverse2.WeaverseItemStore = WeaverseItemStore;
|
|
|
713
713
|
|
|
714
714
|
// src/hooks/use-studio.ts
|
|
715
715
|
var import_react2 = require("react");
|
|
716
|
-
function useStudio(weaverse, themeSchema) {
|
|
716
|
+
function useStudio(weaverse, themeSchema, navigate) {
|
|
717
717
|
(0, import_react2.useEffect)(() => {
|
|
718
|
-
|
|
719
|
-
|
|
718
|
+
let initialized = checkStudioInitialized(weaverse);
|
|
719
|
+
if (isIframe && weaverse.isDesignMode && !initialized) {
|
|
720
|
+
window.__initializedWeaverseStudios[weaverse.pageId] = true;
|
|
720
721
|
weaverse.internal.themeSchema = themeSchema;
|
|
722
|
+
weaverse.internal.navigate = navigate;
|
|
721
723
|
let host = weaverse.weaverseHost;
|
|
722
724
|
let version = weaverse.weaverseVersion || Date.now();
|
|
723
725
|
loadScript(`${host}/assets/studio/studio-bridge.js?v=${version}`).then(
|
|
@@ -732,6 +734,15 @@ function useStudio(weaverse, themeSchema) {
|
|
|
732
734
|
window.__weaverse = weaverse;
|
|
733
735
|
}, [weaverse]);
|
|
734
736
|
}
|
|
737
|
+
function checkStudioInitialized(weaverseInit) {
|
|
738
|
+
window.__initializedWeaverseStudios = window.__initializedWeaverseStudios || {};
|
|
739
|
+
let { pageId } = weaverseInit;
|
|
740
|
+
let initialized = window.__initializedWeaverseStudios?.[pageId];
|
|
741
|
+
if (initialized) {
|
|
742
|
+
return true;
|
|
743
|
+
}
|
|
744
|
+
return false;
|
|
745
|
+
}
|
|
735
746
|
|
|
736
747
|
// src/hooks/use-theme-setting.ts
|
|
737
748
|
var import_react3 = require("@weaverse/react");
|
|
@@ -784,11 +795,8 @@ function getRequestQueries(request) {
|
|
|
784
795
|
|
|
785
796
|
// src/fetch.ts
|
|
786
797
|
var cacheControl = (0, import_hydrogen.generateCacheControlHeader)((0, import_hydrogen.CacheShort)());
|
|
787
|
-
|
|
788
|
-
url,
|
|
789
|
-
options = {},
|
|
790
|
-
context
|
|
791
|
-
}) => {
|
|
798
|
+
async function fetchWithServerCache(params) {
|
|
799
|
+
let { url, options = {}, context } = params;
|
|
792
800
|
let { storefront, waitUntil } = context;
|
|
793
801
|
if (!storefront?.cache || !waitUntil) {
|
|
794
802
|
return fetch(url, options);
|
|
@@ -808,27 +816,31 @@ var fetchWithServerCache = async ({
|
|
|
808
816
|
waitUntil?.(storefront.cache.put(cacheKey, response.clone()));
|
|
809
817
|
}
|
|
810
818
|
return response;
|
|
811
|
-
}
|
|
819
|
+
}
|
|
812
820
|
|
|
813
821
|
// src/loader.ts
|
|
814
|
-
async function weaverseLoader(args, components, loaderConfigs
|
|
815
|
-
let { request, context } = args;
|
|
816
|
-
let queries = getRequestQueries(request);
|
|
817
|
-
let { WEAVERSE_PROJECT_ID, WEAVERSE_HOST } = context?.env || {};
|
|
818
|
-
let { weaverseProjectId, weaverseHost: hostInQueries } = queries;
|
|
819
|
-
let projectId = weaverseProjectId || WEAVERSE_PROJECT_ID;
|
|
820
|
-
let weaverseHost = hostInQueries || WEAVERSE_HOST || "https://weaverse.io";
|
|
821
|
-
if (!projectId) {
|
|
822
|
-
console.log("\u274C Missing `projectId`!");
|
|
823
|
-
return null;
|
|
824
|
-
}
|
|
825
|
-
let configs = {
|
|
826
|
-
projectId,
|
|
827
|
-
weaverseHost,
|
|
828
|
-
...queries
|
|
829
|
-
};
|
|
822
|
+
async function weaverseLoader(args, components, loaderConfigs) {
|
|
830
823
|
try {
|
|
831
|
-
let {
|
|
824
|
+
let { request, context, params } = args;
|
|
825
|
+
let queries = getRequestQueries(request);
|
|
826
|
+
let { WEAVERSE_PROJECT_ID, WEAVERSE_HOST } = context?.env || {};
|
|
827
|
+
let { weaverseProjectId, weaverseHost } = queries;
|
|
828
|
+
let projectId = weaverseProjectId || WEAVERSE_PROJECT_ID;
|
|
829
|
+
weaverseHost = weaverseHost || WEAVERSE_HOST || "https://weaverse.io";
|
|
830
|
+
if (!projectId) {
|
|
831
|
+
throw new Error("Missing project id");
|
|
832
|
+
}
|
|
833
|
+
let configs = {
|
|
834
|
+
projectId,
|
|
835
|
+
weaverseHost,
|
|
836
|
+
...queries,
|
|
837
|
+
requestInfo: {
|
|
838
|
+
params,
|
|
839
|
+
pathname: new URL(request.url).pathname,
|
|
840
|
+
search: new URL(request.url).search
|
|
841
|
+
}
|
|
842
|
+
};
|
|
843
|
+
let res = await fetchWithServerCache({
|
|
832
844
|
url: `${weaverseHost}/api/public/project`,
|
|
833
845
|
options: {
|
|
834
846
|
method: "POST",
|
|
@@ -836,14 +848,16 @@ async function weaverseLoader(args, components, loaderConfigs = {}) {
|
|
|
836
848
|
projectId,
|
|
837
849
|
url: request.url,
|
|
838
850
|
i18n: context?.storefront?.i18n,
|
|
839
|
-
|
|
851
|
+
loaderConfigs
|
|
840
852
|
})
|
|
841
853
|
},
|
|
842
854
|
context
|
|
843
|
-
}).then((r2) => r2.json()).catch((err) => {
|
|
844
|
-
console.log(`\u274C Error fetching project data: ${err?.toString()}`);
|
|
845
|
-
return {};
|
|
846
855
|
});
|
|
856
|
+
let payload = await res.json();
|
|
857
|
+
let { page, project, pageAssignment } = payload;
|
|
858
|
+
if (!page || !project || !pageAssignment) {
|
|
859
|
+
throw new Error(payload?.error || "Invalid payload");
|
|
860
|
+
}
|
|
847
861
|
if (page?.items) {
|
|
848
862
|
let items = page.items;
|
|
849
863
|
page.items = await Promise.all(
|
|
@@ -871,7 +885,7 @@ async function weaverseLoader(args, components, loaderConfigs = {}) {
|
|
|
871
885
|
}
|
|
872
886
|
return { page, configs, project, pageAssignment };
|
|
873
887
|
} catch (err) {
|
|
874
|
-
console.log(`\u274C Error fetching
|
|
888
|
+
console.log(`\u274C Error fetching project data: ${err?.toString()}`);
|
|
875
889
|
return null;
|
|
876
890
|
}
|
|
877
891
|
}
|
|
@@ -879,9 +893,9 @@ async function weaverseLoader(args, components, loaderConfigs = {}) {
|
|
|
879
893
|
// src/index.tsx
|
|
880
894
|
__reExport(src_exports, require("@weaverse/react"), module.exports);
|
|
881
895
|
function WeaverseHydrogenRoot(props) {
|
|
882
|
-
let { components, weaverseData, themeSchema } = props;
|
|
896
|
+
let { components, weaverseData, themeSchema, navigate } = props;
|
|
883
897
|
let weaverse = createWeaverseInstance(weaverseData, components);
|
|
884
|
-
useStudio(weaverse, themeSchema);
|
|
898
|
+
useStudio(weaverse, themeSchema, navigate);
|
|
885
899
|
return /* @__PURE__ */ import_react5.default.createElement(import_react4.WeaverseRoot, { context: weaverse });
|
|
886
900
|
}
|
|
887
901
|
// Annotate the CommonJS export names for ESM import in node:
|
package/dist/index.mjs
CHANGED
|
@@ -7,7 +7,7 @@ import { Weaverse, isBrowser } from "@weaverse/react";
|
|
|
7
7
|
function createCachedWeaverseInstance(init) {
|
|
8
8
|
if (isBrowser) {
|
|
9
9
|
window.__weaverses = window.__weaverses || {};
|
|
10
|
-
let pathname =
|
|
10
|
+
let { pathname } = init.requestInfo;
|
|
11
11
|
if (!window.__weaverses[pathname]) {
|
|
12
12
|
window.__weaverses[pathname] = new Weaverse(init);
|
|
13
13
|
}
|
|
@@ -19,7 +19,7 @@ function createWeaverseInstance(weaverseData, components) {
|
|
|
19
19
|
if (isBrowser) {
|
|
20
20
|
console.log("\u{1F4BF} Weaverse data", weaverseData);
|
|
21
21
|
}
|
|
22
|
-
let { page, configs
|
|
22
|
+
let { page, configs, project, pageAssignment } = weaverseData || {};
|
|
23
23
|
let weaverse = createCachedWeaverseInstance({
|
|
24
24
|
...configs,
|
|
25
25
|
data: page || {},
|
|
@@ -675,11 +675,13 @@ Weaverse2.WeaverseItemStore = WeaverseItemStore;
|
|
|
675
675
|
|
|
676
676
|
// src/hooks/use-studio.ts
|
|
677
677
|
import { useEffect } from "react";
|
|
678
|
-
function useStudio(weaverse, themeSchema) {
|
|
678
|
+
function useStudio(weaverse, themeSchema, navigate) {
|
|
679
679
|
useEffect(() => {
|
|
680
|
-
|
|
681
|
-
|
|
680
|
+
let initialized = checkStudioInitialized(weaverse);
|
|
681
|
+
if (isIframe && weaverse.isDesignMode && !initialized) {
|
|
682
|
+
window.__initializedWeaverseStudios[weaverse.pageId] = true;
|
|
682
683
|
weaverse.internal.themeSchema = themeSchema;
|
|
684
|
+
weaverse.internal.navigate = navigate;
|
|
683
685
|
let host = weaverse.weaverseHost;
|
|
684
686
|
let version = weaverse.weaverseVersion || Date.now();
|
|
685
687
|
loadScript(`${host}/assets/studio/studio-bridge.js?v=${version}`).then(
|
|
@@ -694,6 +696,15 @@ function useStudio(weaverse, themeSchema) {
|
|
|
694
696
|
window.__weaverse = weaverse;
|
|
695
697
|
}, [weaverse]);
|
|
696
698
|
}
|
|
699
|
+
function checkStudioInitialized(weaverseInit) {
|
|
700
|
+
window.__initializedWeaverseStudios = window.__initializedWeaverseStudios || {};
|
|
701
|
+
let { pageId } = weaverseInit;
|
|
702
|
+
let initialized = window.__initializedWeaverseStudios?.[pageId];
|
|
703
|
+
if (initialized) {
|
|
704
|
+
return true;
|
|
705
|
+
}
|
|
706
|
+
return false;
|
|
707
|
+
}
|
|
697
708
|
|
|
698
709
|
// src/hooks/use-theme-setting.ts
|
|
699
710
|
import { useWeaverse } from "@weaverse/react";
|
|
@@ -746,11 +757,8 @@ function getRequestQueries(request) {
|
|
|
746
757
|
|
|
747
758
|
// src/fetch.ts
|
|
748
759
|
var cacheControl = generateCacheControlHeader(CacheShort());
|
|
749
|
-
|
|
750
|
-
url,
|
|
751
|
-
options = {},
|
|
752
|
-
context
|
|
753
|
-
}) => {
|
|
760
|
+
async function fetchWithServerCache(params) {
|
|
761
|
+
let { url, options = {}, context } = params;
|
|
754
762
|
let { storefront, waitUntil } = context;
|
|
755
763
|
if (!storefront?.cache || !waitUntil) {
|
|
756
764
|
return fetch(url, options);
|
|
@@ -770,27 +778,31 @@ var fetchWithServerCache = async ({
|
|
|
770
778
|
waitUntil?.(storefront.cache.put(cacheKey, response.clone()));
|
|
771
779
|
}
|
|
772
780
|
return response;
|
|
773
|
-
}
|
|
781
|
+
}
|
|
774
782
|
|
|
775
783
|
// src/loader.ts
|
|
776
|
-
async function weaverseLoader(args, components, loaderConfigs
|
|
777
|
-
let { request, context } = args;
|
|
778
|
-
let queries = getRequestQueries(request);
|
|
779
|
-
let { WEAVERSE_PROJECT_ID, WEAVERSE_HOST } = context?.env || {};
|
|
780
|
-
let { weaverseProjectId, weaverseHost: hostInQueries } = queries;
|
|
781
|
-
let projectId = weaverseProjectId || WEAVERSE_PROJECT_ID;
|
|
782
|
-
let weaverseHost = hostInQueries || WEAVERSE_HOST || "https://weaverse.io";
|
|
783
|
-
if (!projectId) {
|
|
784
|
-
console.log("\u274C Missing `projectId`!");
|
|
785
|
-
return null;
|
|
786
|
-
}
|
|
787
|
-
let configs = {
|
|
788
|
-
projectId,
|
|
789
|
-
weaverseHost,
|
|
790
|
-
...queries
|
|
791
|
-
};
|
|
784
|
+
async function weaverseLoader(args, components, loaderConfigs) {
|
|
792
785
|
try {
|
|
793
|
-
let {
|
|
786
|
+
let { request, context, params } = args;
|
|
787
|
+
let queries = getRequestQueries(request);
|
|
788
|
+
let { WEAVERSE_PROJECT_ID, WEAVERSE_HOST } = context?.env || {};
|
|
789
|
+
let { weaverseProjectId, weaverseHost } = queries;
|
|
790
|
+
let projectId = weaverseProjectId || WEAVERSE_PROJECT_ID;
|
|
791
|
+
weaverseHost = weaverseHost || WEAVERSE_HOST || "https://weaverse.io";
|
|
792
|
+
if (!projectId) {
|
|
793
|
+
throw new Error("Missing project id");
|
|
794
|
+
}
|
|
795
|
+
let configs = {
|
|
796
|
+
projectId,
|
|
797
|
+
weaverseHost,
|
|
798
|
+
...queries,
|
|
799
|
+
requestInfo: {
|
|
800
|
+
params,
|
|
801
|
+
pathname: new URL(request.url).pathname,
|
|
802
|
+
search: new URL(request.url).search
|
|
803
|
+
}
|
|
804
|
+
};
|
|
805
|
+
let res = await fetchWithServerCache({
|
|
794
806
|
url: `${weaverseHost}/api/public/project`,
|
|
795
807
|
options: {
|
|
796
808
|
method: "POST",
|
|
@@ -798,14 +810,16 @@ async function weaverseLoader(args, components, loaderConfigs = {}) {
|
|
|
798
810
|
projectId,
|
|
799
811
|
url: request.url,
|
|
800
812
|
i18n: context?.storefront?.i18n,
|
|
801
|
-
|
|
813
|
+
loaderConfigs
|
|
802
814
|
})
|
|
803
815
|
},
|
|
804
816
|
context
|
|
805
|
-
}).then((r2) => r2.json()).catch((err) => {
|
|
806
|
-
console.log(`\u274C Error fetching project data: ${err?.toString()}`);
|
|
807
|
-
return {};
|
|
808
817
|
});
|
|
818
|
+
let payload = await res.json();
|
|
819
|
+
let { page, project, pageAssignment } = payload;
|
|
820
|
+
if (!page || !project || !pageAssignment) {
|
|
821
|
+
throw new Error(payload?.error || "Invalid payload");
|
|
822
|
+
}
|
|
809
823
|
if (page?.items) {
|
|
810
824
|
let items = page.items;
|
|
811
825
|
page.items = await Promise.all(
|
|
@@ -833,7 +847,7 @@ async function weaverseLoader(args, components, loaderConfigs = {}) {
|
|
|
833
847
|
}
|
|
834
848
|
return { page, configs, project, pageAssignment };
|
|
835
849
|
} catch (err) {
|
|
836
|
-
console.log(`\u274C Error fetching
|
|
850
|
+
console.log(`\u274C Error fetching project data: ${err?.toString()}`);
|
|
837
851
|
return null;
|
|
838
852
|
}
|
|
839
853
|
}
|
|
@@ -841,9 +855,9 @@ async function weaverseLoader(args, components, loaderConfigs = {}) {
|
|
|
841
855
|
// src/index.tsx
|
|
842
856
|
export * from "@weaverse/react";
|
|
843
857
|
function WeaverseHydrogenRoot(props) {
|
|
844
|
-
let { components, weaverseData, themeSchema } = props;
|
|
858
|
+
let { components, weaverseData, themeSchema, navigate } = props;
|
|
845
859
|
let weaverse = createWeaverseInstance(weaverseData, components);
|
|
846
|
-
useStudio(weaverse, themeSchema);
|
|
860
|
+
useStudio(weaverse, themeSchema, navigate);
|
|
847
861
|
return /* @__PURE__ */ React.createElement(WeaverseRoot, { context: weaverse });
|
|
848
862
|
}
|
|
849
863
|
export {
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.0.
|
|
2
|
+
"version": "1.0.57",
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"typings": "dist/index.d.ts",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"author": "Weaverse Team",
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"@shopify/hydrogen": "2023.4.6",
|
|
36
|
-
"@weaverse/react": "1.0.
|
|
36
|
+
"@weaverse/react": "1.0.57"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@shopify/remix-oxygen": "^1.1.1"
|