@weaverse/hydrogen 1.0.54 → 1.0.56
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 +101 -32
- package/dist/index.d.ts +101 -32
- package/dist/index.js +58 -41
- package/dist/index.mjs +58 -41
- 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 {
|
|
@@ -25,16 +41,12 @@ interface HydrogenComponentData extends Omit<ElementData, 'childIds' | 'css'> {
|
|
|
25
41
|
createdAt: string;
|
|
26
42
|
updatedAt: string;
|
|
27
43
|
deletedAt: string;
|
|
28
|
-
parentId: string;
|
|
29
44
|
children: {
|
|
30
45
|
id: string;
|
|
31
46
|
}[];
|
|
32
|
-
|
|
33
|
-
data: Record<string, unknown>;
|
|
47
|
+
data: Record<string, any>;
|
|
34
48
|
}
|
|
35
|
-
|
|
36
|
-
interface HydrogenComponentSchema extends Omit<ElementSchema, 'parentTypes' | 'flags' | 'inspector'> {
|
|
37
|
-
flags?: ComponentFlags;
|
|
49
|
+
interface HydrogenComponentSchema extends Omit<ElementSchema, 'parentTypes' | 'flags' | 'inspector' | 'gridSize' | 'childElements' | 'catalog'> {
|
|
38
50
|
childTypes?: string[];
|
|
39
51
|
inspector: InspectorGroup[];
|
|
40
52
|
presets?: Omit<HydrogenComponentPresets, 'type'>;
|
|
@@ -48,21 +60,40 @@ interface HydrogenComponentProps<L = any> extends WeaverseElement {
|
|
|
48
60
|
loaderData?: L;
|
|
49
61
|
children?: React.JSX.Element[];
|
|
50
62
|
}
|
|
51
|
-
|
|
63
|
+
type WeaverseLoaderRequestInfo = {
|
|
64
|
+
params: any;
|
|
65
|
+
pathname: string;
|
|
66
|
+
search: string;
|
|
67
|
+
};
|
|
68
|
+
interface WeaverseHydrogen extends Omit<Weaverse, 'itemInstances' | 'elementInstances' | 'registerElement' | 'data'> {
|
|
52
69
|
itemInstances: Map<string | number, HydrogenComponentInstance>;
|
|
53
70
|
elementInstances: Map<string, HydrogenElement>;
|
|
54
71
|
registerElement(element: HydrogenElement): void;
|
|
55
72
|
internal: WeaverseInternal;
|
|
73
|
+
data: WeaverseStorefrontData;
|
|
74
|
+
requestInfo: WeaverseLoaderRequestInfo;
|
|
56
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
|
+
};
|
|
57
92
|
type WeaverseInternal = {
|
|
58
93
|
themeSchema: HydrogenThemeSchema;
|
|
59
|
-
pageAssignment:
|
|
60
|
-
project:
|
|
61
|
-
|
|
62
|
-
theme: Record<string, any>;
|
|
63
|
-
};
|
|
64
|
-
[key: string]: any;
|
|
65
|
-
};
|
|
94
|
+
pageAssignment: HydrogenPageAssignment;
|
|
95
|
+
project: HydrogenProjectType;
|
|
96
|
+
navigate: NavigateFunction;
|
|
66
97
|
};
|
|
67
98
|
type HydrogenComponentPresets = {
|
|
68
99
|
type: string;
|
|
@@ -75,7 +106,6 @@ interface HydrogenElement {
|
|
|
75
106
|
}
|
|
76
107
|
interface HydrogenComponentInstance extends Omit<WeaverseItemStore, '_flags' | 'data' | 'Element'> {
|
|
77
108
|
get _element(): HTMLElement | null;
|
|
78
|
-
get _flags(): ComponentFlags;
|
|
79
109
|
get Element(): HydrogenElement | undefined;
|
|
80
110
|
get data(): HydrogenComponentData;
|
|
81
111
|
_store: HydrogenComponentData;
|
|
@@ -90,18 +120,56 @@ type HydrogenPageConfigs = {
|
|
|
90
120
|
weaverseHost: string;
|
|
91
121
|
version?: string;
|
|
92
122
|
isDesignMode?: boolean;
|
|
123
|
+
requestInfo: WeaverseLoaderRequestInfo;
|
|
93
124
|
[key: string]: any;
|
|
94
125
|
};
|
|
95
|
-
|
|
126
|
+
type HydrogenPageAssignment = {
|
|
127
|
+
projectId: string;
|
|
128
|
+
type: PageType;
|
|
129
|
+
handle: string;
|
|
130
|
+
locale: string;
|
|
131
|
+
};
|
|
132
|
+
interface WeaverseLoaderData {
|
|
96
133
|
configs: HydrogenPageConfigs;
|
|
97
|
-
page:
|
|
98
|
-
project:
|
|
99
|
-
pageAssignment:
|
|
134
|
+
page: HydrogenPageData;
|
|
135
|
+
project: HydrogenProjectType;
|
|
136
|
+
pageAssignment: HydrogenPageAssignment;
|
|
100
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;
|
|
101
168
|
interface WeaverseHydrogenRootProps {
|
|
102
|
-
weaverseData:
|
|
103
|
-
components:
|
|
169
|
+
weaverseData: WeaverseLoaderData;
|
|
170
|
+
components: HydrogenComponent[];
|
|
104
171
|
themeSchema: HydrogenThemeSchema;
|
|
172
|
+
navigate: NavigateFunction;
|
|
105
173
|
}
|
|
106
174
|
type HydrogenThemeInfo = {
|
|
107
175
|
name: string;
|
|
@@ -114,26 +182,27 @@ interface HydrogenThemeSchema {
|
|
|
114
182
|
info: HydrogenThemeInfo;
|
|
115
183
|
inspector: InspectorGroup[];
|
|
116
184
|
}
|
|
117
|
-
type PageType =
|
|
185
|
+
type PageType = keyof typeof STORE_PAGES;
|
|
118
186
|
type WeaverseLoaderConfigs = {
|
|
119
|
-
|
|
120
|
-
|
|
187
|
+
type: PageType;
|
|
188
|
+
locale?: string;
|
|
121
189
|
handle?: string;
|
|
122
190
|
};
|
|
123
191
|
|
|
124
|
-
declare function useThemeSettings(): any[];
|
|
192
|
+
declare function useThemeSettings(): (Record<string, any> | ((newSettings: any) => void))[];
|
|
125
193
|
|
|
194
|
+
type FetchWithServerCacheParams = {
|
|
195
|
+
url: string;
|
|
196
|
+
options?: RequestInit | Request;
|
|
197
|
+
context: AppLoadContext;
|
|
198
|
+
};
|
|
126
199
|
/**
|
|
127
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.
|
|
128
201
|
*/
|
|
129
|
-
declare
|
|
130
|
-
url: string;
|
|
131
|
-
options?: Request | RequestInit | undefined;
|
|
132
|
-
context: AppLoadContext;
|
|
133
|
-
}) => Promise<any>;
|
|
202
|
+
declare function fetchWithServerCache(params: FetchWithServerCacheParams): Promise<any>;
|
|
134
203
|
|
|
135
|
-
declare function weaverseLoader(args: LoaderArgs, components:
|
|
204
|
+
declare function weaverseLoader(args: LoaderArgs, components: HydrogenComponent[], loaderConfigs?: WeaverseLoaderConfigs): Promise<WeaverseLoaderData | null>;
|
|
136
205
|
|
|
137
206
|
declare function WeaverseHydrogenRoot(props: WeaverseHydrogenRootProps): React.JSX.Element;
|
|
138
207
|
|
|
139
|
-
export {
|
|
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 {
|
|
@@ -25,16 +41,12 @@ interface HydrogenComponentData extends Omit<ElementData, 'childIds' | 'css'> {
|
|
|
25
41
|
createdAt: string;
|
|
26
42
|
updatedAt: string;
|
|
27
43
|
deletedAt: string;
|
|
28
|
-
parentId: string;
|
|
29
44
|
children: {
|
|
30
45
|
id: string;
|
|
31
46
|
}[];
|
|
32
|
-
|
|
33
|
-
data: Record<string, unknown>;
|
|
47
|
+
data: Record<string, any>;
|
|
34
48
|
}
|
|
35
|
-
|
|
36
|
-
interface HydrogenComponentSchema extends Omit<ElementSchema, 'parentTypes' | 'flags' | 'inspector'> {
|
|
37
|
-
flags?: ComponentFlags;
|
|
49
|
+
interface HydrogenComponentSchema extends Omit<ElementSchema, 'parentTypes' | 'flags' | 'inspector' | 'gridSize' | 'childElements' | 'catalog'> {
|
|
38
50
|
childTypes?: string[];
|
|
39
51
|
inspector: InspectorGroup[];
|
|
40
52
|
presets?: Omit<HydrogenComponentPresets, 'type'>;
|
|
@@ -48,21 +60,40 @@ interface HydrogenComponentProps<L = any> extends WeaverseElement {
|
|
|
48
60
|
loaderData?: L;
|
|
49
61
|
children?: React.JSX.Element[];
|
|
50
62
|
}
|
|
51
|
-
|
|
63
|
+
type WeaverseLoaderRequestInfo = {
|
|
64
|
+
params: any;
|
|
65
|
+
pathname: string;
|
|
66
|
+
search: string;
|
|
67
|
+
};
|
|
68
|
+
interface WeaverseHydrogen extends Omit<Weaverse, 'itemInstances' | 'elementInstances' | 'registerElement' | 'data'> {
|
|
52
69
|
itemInstances: Map<string | number, HydrogenComponentInstance>;
|
|
53
70
|
elementInstances: Map<string, HydrogenElement>;
|
|
54
71
|
registerElement(element: HydrogenElement): void;
|
|
55
72
|
internal: WeaverseInternal;
|
|
73
|
+
data: WeaverseStorefrontData;
|
|
74
|
+
requestInfo: WeaverseLoaderRequestInfo;
|
|
56
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
|
+
};
|
|
57
92
|
type WeaverseInternal = {
|
|
58
93
|
themeSchema: HydrogenThemeSchema;
|
|
59
|
-
pageAssignment:
|
|
60
|
-
project:
|
|
61
|
-
|
|
62
|
-
theme: Record<string, any>;
|
|
63
|
-
};
|
|
64
|
-
[key: string]: any;
|
|
65
|
-
};
|
|
94
|
+
pageAssignment: HydrogenPageAssignment;
|
|
95
|
+
project: HydrogenProjectType;
|
|
96
|
+
navigate: NavigateFunction;
|
|
66
97
|
};
|
|
67
98
|
type HydrogenComponentPresets = {
|
|
68
99
|
type: string;
|
|
@@ -75,7 +106,6 @@ interface HydrogenElement {
|
|
|
75
106
|
}
|
|
76
107
|
interface HydrogenComponentInstance extends Omit<WeaverseItemStore, '_flags' | 'data' | 'Element'> {
|
|
77
108
|
get _element(): HTMLElement | null;
|
|
78
|
-
get _flags(): ComponentFlags;
|
|
79
109
|
get Element(): HydrogenElement | undefined;
|
|
80
110
|
get data(): HydrogenComponentData;
|
|
81
111
|
_store: HydrogenComponentData;
|
|
@@ -90,18 +120,56 @@ type HydrogenPageConfigs = {
|
|
|
90
120
|
weaverseHost: string;
|
|
91
121
|
version?: string;
|
|
92
122
|
isDesignMode?: boolean;
|
|
123
|
+
requestInfo: WeaverseLoaderRequestInfo;
|
|
93
124
|
[key: string]: any;
|
|
94
125
|
};
|
|
95
|
-
|
|
126
|
+
type HydrogenPageAssignment = {
|
|
127
|
+
projectId: string;
|
|
128
|
+
type: PageType;
|
|
129
|
+
handle: string;
|
|
130
|
+
locale: string;
|
|
131
|
+
};
|
|
132
|
+
interface WeaverseLoaderData {
|
|
96
133
|
configs: HydrogenPageConfigs;
|
|
97
|
-
page:
|
|
98
|
-
project:
|
|
99
|
-
pageAssignment:
|
|
134
|
+
page: HydrogenPageData;
|
|
135
|
+
project: HydrogenProjectType;
|
|
136
|
+
pageAssignment: HydrogenPageAssignment;
|
|
100
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;
|
|
101
168
|
interface WeaverseHydrogenRootProps {
|
|
102
|
-
weaverseData:
|
|
103
|
-
components:
|
|
169
|
+
weaverseData: WeaverseLoaderData;
|
|
170
|
+
components: HydrogenComponent[];
|
|
104
171
|
themeSchema: HydrogenThemeSchema;
|
|
172
|
+
navigate: NavigateFunction;
|
|
105
173
|
}
|
|
106
174
|
type HydrogenThemeInfo = {
|
|
107
175
|
name: string;
|
|
@@ -114,26 +182,27 @@ interface HydrogenThemeSchema {
|
|
|
114
182
|
info: HydrogenThemeInfo;
|
|
115
183
|
inspector: InspectorGroup[];
|
|
116
184
|
}
|
|
117
|
-
type PageType =
|
|
185
|
+
type PageType = keyof typeof STORE_PAGES;
|
|
118
186
|
type WeaverseLoaderConfigs = {
|
|
119
|
-
|
|
120
|
-
|
|
187
|
+
type: PageType;
|
|
188
|
+
locale?: string;
|
|
121
189
|
handle?: string;
|
|
122
190
|
};
|
|
123
191
|
|
|
124
|
-
declare function useThemeSettings(): any[];
|
|
192
|
+
declare function useThemeSettings(): (Record<string, any> | ((newSettings: any) => void))[];
|
|
125
193
|
|
|
194
|
+
type FetchWithServerCacheParams = {
|
|
195
|
+
url: string;
|
|
196
|
+
options?: RequestInit | Request;
|
|
197
|
+
context: AppLoadContext;
|
|
198
|
+
};
|
|
126
199
|
/**
|
|
127
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.
|
|
128
201
|
*/
|
|
129
|
-
declare
|
|
130
|
-
url: string;
|
|
131
|
-
options?: Request | RequestInit | undefined;
|
|
132
|
-
context: AppLoadContext;
|
|
133
|
-
}) => Promise<any>;
|
|
202
|
+
declare function fetchWithServerCache(params: FetchWithServerCacheParams): Promise<any>;
|
|
134
203
|
|
|
135
|
-
declare function weaverseLoader(args: LoaderArgs, components:
|
|
204
|
+
declare function weaverseLoader(args: LoaderArgs, components: HydrogenComponent[], loaderConfigs?: WeaverseLoaderConfigs): Promise<WeaverseLoaderData | null>;
|
|
136
205
|
|
|
137
206
|
declare function WeaverseHydrogenRoot(props: WeaverseHydrogenRootProps): React.JSX.Element;
|
|
138
207
|
|
|
139
|
-
export {
|
|
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
|
}
|
|
@@ -54,8 +54,10 @@ function createCachedWeaverseInstance(init) {
|
|
|
54
54
|
return new import_react.Weaverse(init);
|
|
55
55
|
}
|
|
56
56
|
function createWeaverseInstance(weaverseData, components) {
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
if (import_react.isBrowser) {
|
|
58
|
+
console.log("\u{1F4BF} Weaverse data", weaverseData);
|
|
59
|
+
}
|
|
60
|
+
let { page, configs, project, pageAssignment } = weaverseData || {};
|
|
59
61
|
let weaverse = createCachedWeaverseInstance({
|
|
60
62
|
...configs,
|
|
61
63
|
data: page || {},
|
|
@@ -64,11 +66,11 @@ function createWeaverseInstance(weaverseData, components) {
|
|
|
64
66
|
});
|
|
65
67
|
weaverse.internal.project = project;
|
|
66
68
|
weaverse.internal.pageAssignment = pageAssignment;
|
|
67
|
-
|
|
69
|
+
components.forEach((comp) => {
|
|
68
70
|
weaverse.registerElement({
|
|
69
|
-
type:
|
|
70
|
-
Component:
|
|
71
|
-
schema:
|
|
71
|
+
type: comp?.schema?.type,
|
|
72
|
+
Component: comp?.default,
|
|
73
|
+
schema: comp?.schema
|
|
72
74
|
});
|
|
73
75
|
});
|
|
74
76
|
return weaverse;
|
|
@@ -711,11 +713,13 @@ Weaverse2.WeaverseItemStore = WeaverseItemStore;
|
|
|
711
713
|
|
|
712
714
|
// src/hooks/use-studio.ts
|
|
713
715
|
var import_react2 = require("react");
|
|
714
|
-
function useStudio(weaverse, themeSchema) {
|
|
716
|
+
function useStudio(weaverse, themeSchema, navigate) {
|
|
715
717
|
(0, import_react2.useEffect)(() => {
|
|
716
|
-
|
|
717
|
-
|
|
718
|
+
let initialized = checkStudioInitialized(weaverse);
|
|
719
|
+
if (isIframe && weaverse.isDesignMode && !initialized) {
|
|
720
|
+
window.__initializedWeaverseStudios[weaverse.pageId] = true;
|
|
718
721
|
weaverse.internal.themeSchema = themeSchema;
|
|
722
|
+
weaverse.internal.navigate = navigate;
|
|
719
723
|
let host = weaverse.weaverseHost;
|
|
720
724
|
let version = weaverse.weaverseVersion || Date.now();
|
|
721
725
|
loadScript(`${host}/assets/studio/studio-bridge.js?v=${version}`).then(
|
|
@@ -730,6 +734,15 @@ function useStudio(weaverse, themeSchema) {
|
|
|
730
734
|
window.__weaverse = weaverse;
|
|
731
735
|
}, [weaverse]);
|
|
732
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
|
+
}
|
|
733
746
|
|
|
734
747
|
// src/hooks/use-theme-setting.ts
|
|
735
748
|
var import_react3 = require("@weaverse/react");
|
|
@@ -782,11 +795,8 @@ function getRequestQueries(request) {
|
|
|
782
795
|
|
|
783
796
|
// src/fetch.ts
|
|
784
797
|
var cacheControl = (0, import_hydrogen.generateCacheControlHeader)((0, import_hydrogen.CacheShort)());
|
|
785
|
-
|
|
786
|
-
url,
|
|
787
|
-
options = {},
|
|
788
|
-
context
|
|
789
|
-
}) => {
|
|
798
|
+
async function fetchWithServerCache(params) {
|
|
799
|
+
let { url, options = {}, context } = params;
|
|
790
800
|
let { storefront, waitUntil } = context;
|
|
791
801
|
if (!storefront?.cache || !waitUntil) {
|
|
792
802
|
return fetch(url, options);
|
|
@@ -806,27 +816,31 @@ var fetchWithServerCache = async ({
|
|
|
806
816
|
waitUntil?.(storefront.cache.put(cacheKey, response.clone()));
|
|
807
817
|
}
|
|
808
818
|
return response;
|
|
809
|
-
}
|
|
819
|
+
}
|
|
810
820
|
|
|
811
821
|
// src/loader.ts
|
|
812
|
-
async function weaverseLoader(args, components, loaderConfigs
|
|
813
|
-
let { request, context } = args;
|
|
814
|
-
let queries = getRequestQueries(request);
|
|
815
|
-
let { WEAVERSE_PROJECT_ID, WEAVERSE_HOST } = context?.env || {};
|
|
816
|
-
let { weaverseProjectId, weaverseHost: hostInQueries } = queries;
|
|
817
|
-
let projectId = weaverseProjectId || WEAVERSE_PROJECT_ID;
|
|
818
|
-
let weaverseHost = hostInQueries || WEAVERSE_HOST || "https://weaverse.io";
|
|
819
|
-
if (!projectId) {
|
|
820
|
-
console.log("\u274C Missing `projectId`!");
|
|
821
|
-
return null;
|
|
822
|
-
}
|
|
823
|
-
let configs = {
|
|
824
|
-
projectId,
|
|
825
|
-
weaverseHost,
|
|
826
|
-
...queries
|
|
827
|
-
};
|
|
822
|
+
async function weaverseLoader(args, components, loaderConfigs) {
|
|
828
823
|
try {
|
|
829
|
-
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({
|
|
830
844
|
url: `${weaverseHost}/api/public/project`,
|
|
831
845
|
options: {
|
|
832
846
|
method: "POST",
|
|
@@ -834,19 +848,22 @@ async function weaverseLoader(args, components, loaderConfigs = {}) {
|
|
|
834
848
|
projectId,
|
|
835
849
|
url: request.url,
|
|
836
850
|
i18n: context?.storefront?.i18n,
|
|
837
|
-
|
|
851
|
+
loaderConfigs
|
|
838
852
|
})
|
|
839
853
|
},
|
|
840
854
|
context
|
|
841
|
-
}).then((r2) => r2.json()).catch((err) => {
|
|
842
|
-
console.log(`\u274C Error fetching project data: ${err?.toString()}`);
|
|
843
|
-
return {};
|
|
844
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
|
+
}
|
|
845
861
|
if (page?.items) {
|
|
846
862
|
let items = page.items;
|
|
847
863
|
page.items = await Promise.all(
|
|
848
864
|
items.map(async (itemData) => {
|
|
849
|
-
let
|
|
865
|
+
let type = itemData.type;
|
|
866
|
+
let { loader } = components.find(({ schema }) => schema?.type === type) || {};
|
|
850
867
|
if (loader && typeof loader === "function") {
|
|
851
868
|
try {
|
|
852
869
|
return {
|
|
@@ -868,7 +885,7 @@ async function weaverseLoader(args, components, loaderConfigs = {}) {
|
|
|
868
885
|
}
|
|
869
886
|
return { page, configs, project, pageAssignment };
|
|
870
887
|
} catch (err) {
|
|
871
|
-
console.log(`\u274C Error fetching
|
|
888
|
+
console.log(`\u274C Error fetching project data: ${err?.toString()}`);
|
|
872
889
|
return null;
|
|
873
890
|
}
|
|
874
891
|
}
|
|
@@ -876,9 +893,9 @@ async function weaverseLoader(args, components, loaderConfigs = {}) {
|
|
|
876
893
|
// src/index.tsx
|
|
877
894
|
__reExport(src_exports, require("@weaverse/react"), module.exports);
|
|
878
895
|
function WeaverseHydrogenRoot(props) {
|
|
879
|
-
let { components, weaverseData, themeSchema } = props;
|
|
896
|
+
let { components, weaverseData, themeSchema, navigate } = props;
|
|
880
897
|
let weaverse = createWeaverseInstance(weaverseData, components);
|
|
881
|
-
useStudio(weaverse, themeSchema);
|
|
898
|
+
useStudio(weaverse, themeSchema, navigate);
|
|
882
899
|
return /* @__PURE__ */ import_react5.default.createElement(import_react4.WeaverseRoot, { context: weaverse });
|
|
883
900
|
}
|
|
884
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
|
}
|
|
@@ -16,8 +16,10 @@ function createCachedWeaverseInstance(init) {
|
|
|
16
16
|
return new Weaverse(init);
|
|
17
17
|
}
|
|
18
18
|
function createWeaverseInstance(weaverseData, components) {
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
if (isBrowser) {
|
|
20
|
+
console.log("\u{1F4BF} Weaverse data", weaverseData);
|
|
21
|
+
}
|
|
22
|
+
let { page, configs, project, pageAssignment } = weaverseData || {};
|
|
21
23
|
let weaverse = createCachedWeaverseInstance({
|
|
22
24
|
...configs,
|
|
23
25
|
data: page || {},
|
|
@@ -26,11 +28,11 @@ function createWeaverseInstance(weaverseData, components) {
|
|
|
26
28
|
});
|
|
27
29
|
weaverse.internal.project = project;
|
|
28
30
|
weaverse.internal.pageAssignment = pageAssignment;
|
|
29
|
-
|
|
31
|
+
components.forEach((comp) => {
|
|
30
32
|
weaverse.registerElement({
|
|
31
|
-
type:
|
|
32
|
-
Component:
|
|
33
|
-
schema:
|
|
33
|
+
type: comp?.schema?.type,
|
|
34
|
+
Component: comp?.default,
|
|
35
|
+
schema: comp?.schema
|
|
34
36
|
});
|
|
35
37
|
});
|
|
36
38
|
return weaverse;
|
|
@@ -673,11 +675,13 @@ Weaverse2.WeaverseItemStore = WeaverseItemStore;
|
|
|
673
675
|
|
|
674
676
|
// src/hooks/use-studio.ts
|
|
675
677
|
import { useEffect } from "react";
|
|
676
|
-
function useStudio(weaverse, themeSchema) {
|
|
678
|
+
function useStudio(weaverse, themeSchema, navigate) {
|
|
677
679
|
useEffect(() => {
|
|
678
|
-
|
|
679
|
-
|
|
680
|
+
let initialized = checkStudioInitialized(weaverse);
|
|
681
|
+
if (isIframe && weaverse.isDesignMode && !initialized) {
|
|
682
|
+
window.__initializedWeaverseStudios[weaverse.pageId] = true;
|
|
680
683
|
weaverse.internal.themeSchema = themeSchema;
|
|
684
|
+
weaverse.internal.navigate = navigate;
|
|
681
685
|
let host = weaverse.weaverseHost;
|
|
682
686
|
let version = weaverse.weaverseVersion || Date.now();
|
|
683
687
|
loadScript(`${host}/assets/studio/studio-bridge.js?v=${version}`).then(
|
|
@@ -692,6 +696,15 @@ function useStudio(weaverse, themeSchema) {
|
|
|
692
696
|
window.__weaverse = weaverse;
|
|
693
697
|
}, [weaverse]);
|
|
694
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
|
+
}
|
|
695
708
|
|
|
696
709
|
// src/hooks/use-theme-setting.ts
|
|
697
710
|
import { useWeaverse } from "@weaverse/react";
|
|
@@ -744,11 +757,8 @@ function getRequestQueries(request) {
|
|
|
744
757
|
|
|
745
758
|
// src/fetch.ts
|
|
746
759
|
var cacheControl = generateCacheControlHeader(CacheShort());
|
|
747
|
-
|
|
748
|
-
url,
|
|
749
|
-
options = {},
|
|
750
|
-
context
|
|
751
|
-
}) => {
|
|
760
|
+
async function fetchWithServerCache(params) {
|
|
761
|
+
let { url, options = {}, context } = params;
|
|
752
762
|
let { storefront, waitUntil } = context;
|
|
753
763
|
if (!storefront?.cache || !waitUntil) {
|
|
754
764
|
return fetch(url, options);
|
|
@@ -768,27 +778,31 @@ var fetchWithServerCache = async ({
|
|
|
768
778
|
waitUntil?.(storefront.cache.put(cacheKey, response.clone()));
|
|
769
779
|
}
|
|
770
780
|
return response;
|
|
771
|
-
}
|
|
781
|
+
}
|
|
772
782
|
|
|
773
783
|
// src/loader.ts
|
|
774
|
-
async function weaverseLoader(args, components, loaderConfigs
|
|
775
|
-
let { request, context } = args;
|
|
776
|
-
let queries = getRequestQueries(request);
|
|
777
|
-
let { WEAVERSE_PROJECT_ID, WEAVERSE_HOST } = context?.env || {};
|
|
778
|
-
let { weaverseProjectId, weaverseHost: hostInQueries } = queries;
|
|
779
|
-
let projectId = weaverseProjectId || WEAVERSE_PROJECT_ID;
|
|
780
|
-
let weaverseHost = hostInQueries || WEAVERSE_HOST || "https://weaverse.io";
|
|
781
|
-
if (!projectId) {
|
|
782
|
-
console.log("\u274C Missing `projectId`!");
|
|
783
|
-
return null;
|
|
784
|
-
}
|
|
785
|
-
let configs = {
|
|
786
|
-
projectId,
|
|
787
|
-
weaverseHost,
|
|
788
|
-
...queries
|
|
789
|
-
};
|
|
784
|
+
async function weaverseLoader(args, components, loaderConfigs) {
|
|
790
785
|
try {
|
|
791
|
-
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({
|
|
792
806
|
url: `${weaverseHost}/api/public/project`,
|
|
793
807
|
options: {
|
|
794
808
|
method: "POST",
|
|
@@ -796,19 +810,22 @@ async function weaverseLoader(args, components, loaderConfigs = {}) {
|
|
|
796
810
|
projectId,
|
|
797
811
|
url: request.url,
|
|
798
812
|
i18n: context?.storefront?.i18n,
|
|
799
|
-
|
|
813
|
+
loaderConfigs
|
|
800
814
|
})
|
|
801
815
|
},
|
|
802
816
|
context
|
|
803
|
-
}).then((r2) => r2.json()).catch((err) => {
|
|
804
|
-
console.log(`\u274C Error fetching project data: ${err?.toString()}`);
|
|
805
|
-
return {};
|
|
806
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
|
+
}
|
|
807
823
|
if (page?.items) {
|
|
808
824
|
let items = page.items;
|
|
809
825
|
page.items = await Promise.all(
|
|
810
826
|
items.map(async (itemData) => {
|
|
811
|
-
let
|
|
827
|
+
let type = itemData.type;
|
|
828
|
+
let { loader } = components.find(({ schema }) => schema?.type === type) || {};
|
|
812
829
|
if (loader && typeof loader === "function") {
|
|
813
830
|
try {
|
|
814
831
|
return {
|
|
@@ -830,7 +847,7 @@ async function weaverseLoader(args, components, loaderConfigs = {}) {
|
|
|
830
847
|
}
|
|
831
848
|
return { page, configs, project, pageAssignment };
|
|
832
849
|
} catch (err) {
|
|
833
|
-
console.log(`\u274C Error fetching
|
|
850
|
+
console.log(`\u274C Error fetching project data: ${err?.toString()}`);
|
|
834
851
|
return null;
|
|
835
852
|
}
|
|
836
853
|
}
|
|
@@ -838,9 +855,9 @@ async function weaverseLoader(args, components, loaderConfigs = {}) {
|
|
|
838
855
|
// src/index.tsx
|
|
839
856
|
export * from "@weaverse/react";
|
|
840
857
|
function WeaverseHydrogenRoot(props) {
|
|
841
|
-
let { components, weaverseData, themeSchema } = props;
|
|
858
|
+
let { components, weaverseData, themeSchema, navigate } = props;
|
|
842
859
|
let weaverse = createWeaverseInstance(weaverseData, components);
|
|
843
|
-
useStudio(weaverse, themeSchema);
|
|
860
|
+
useStudio(weaverse, themeSchema, navigate);
|
|
844
861
|
return /* @__PURE__ */ React.createElement(WeaverseRoot, { context: weaverse });
|
|
845
862
|
}
|
|
846
863
|
export {
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.0.
|
|
2
|
+
"version": "1.0.56",
|
|
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.56"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@shopify/remix-oxygen": "^1.1.1"
|