@weaverse/hydrogen 1.0.48 → 1.0.50
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.ts +27 -19
- package/dist/index.js +30 -31
- package/dist/index.mjs +30 -31
- package/package.json +4 -4
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
import React, { ForwardRefExoticComponent } from 'react';
|
|
2
2
|
import { LoaderArgs, AppLoadContext } from '@shopify/remix-oxygen';
|
|
3
|
-
import { ElementData, ElementSchema, WeaverseElement, Weaverse, WeaverseItemStore } from '@weaverse/react';
|
|
3
|
+
import { ElementData, ElementSchema, BasicInput, WeaverseElement, Weaverse, WeaverseItemStore } from '@weaverse/react';
|
|
4
4
|
export * from '@weaverse/react';
|
|
5
5
|
|
|
6
|
-
/**
|
|
7
|
-
* Declare local additions to `AppLoadContext` to include the session utilities we injected in `server.ts`.
|
|
8
|
-
*/
|
|
9
6
|
type TODO = any;
|
|
10
7
|
declare module '@shopify/remix-oxygen' {
|
|
11
8
|
interface AppLoadContext {
|
|
@@ -24,6 +21,7 @@ type WeaverseLoaderArgs = LoaderArgs & {
|
|
|
24
21
|
};
|
|
25
22
|
interface HydrogenComponentData extends Omit<ElementData, 'childIds' | 'css'> {
|
|
26
23
|
id: string;
|
|
24
|
+
type: string;
|
|
27
25
|
createdAt: string;
|
|
28
26
|
updatedAt: string;
|
|
29
27
|
deletedAt: string;
|
|
@@ -34,27 +32,35 @@ interface HydrogenComponentData extends Omit<ElementData, 'childIds' | 'css'> {
|
|
|
34
32
|
loaderData: unknown;
|
|
35
33
|
data: Record<string, unknown>;
|
|
36
34
|
}
|
|
37
|
-
type ComponentFlags = Partial<Record<
|
|
38
|
-
interface HydrogenComponentSchema extends Omit<ElementSchema, 'parentTypes' | 'flags'> {
|
|
35
|
+
type ComponentFlags = Partial<Record<string, boolean>>;
|
|
36
|
+
interface HydrogenComponentSchema extends Omit<ElementSchema, 'parentTypes' | 'flags' | 'inspector'> {
|
|
39
37
|
flags?: ComponentFlags;
|
|
40
38
|
childTypes?: string[];
|
|
39
|
+
inspector: InspectorGroup[];
|
|
40
|
+
presets?: Omit<HydrogenComponentPresets, 'type'>;
|
|
41
41
|
}
|
|
42
|
-
interface
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
42
|
+
interface InspectorGroup {
|
|
43
|
+
group: string;
|
|
44
|
+
inputs: BasicInput[];
|
|
45
|
+
}
|
|
46
|
+
interface HydrogenComponentProps<L = any> extends WeaverseElement {
|
|
47
|
+
className?: string;
|
|
46
48
|
loaderData?: L;
|
|
47
49
|
children?: React.JSX.Element[];
|
|
48
50
|
}
|
|
49
|
-
interface WeaverseHydrogen extends Omit<Weaverse, 'itemInstances'> {
|
|
51
|
+
interface WeaverseHydrogen extends Omit<Weaverse, 'itemInstances' | 'elementInstances' | 'registerElement'> {
|
|
50
52
|
itemInstances: Map<string | number, HydrogenComponentInstance>;
|
|
53
|
+
elementInstances: Map<string, HydrogenElement>;
|
|
54
|
+
registerElement(element: HydrogenElement): void;
|
|
51
55
|
}
|
|
52
|
-
type
|
|
56
|
+
type HydrogenComponentPresets = {
|
|
57
|
+
type: string;
|
|
58
|
+
children?: HydrogenComponentPresets[];
|
|
59
|
+
};
|
|
53
60
|
interface HydrogenElement {
|
|
54
|
-
Component: ForwardRefExoticComponent<
|
|
61
|
+
Component: ForwardRefExoticComponent<HydrogenComponentProps>;
|
|
55
62
|
type: string;
|
|
56
63
|
schema?: HydrogenComponentSchema;
|
|
57
|
-
template?: HydrogenComponentTemplate;
|
|
58
64
|
}
|
|
59
65
|
interface HydrogenComponentInstance extends Omit<WeaverseItemStore, '_flags' | 'data' | 'Element'> {
|
|
60
66
|
get _element(): HTMLElement | null;
|
|
@@ -78,12 +84,14 @@ interface HydrogenPageData {
|
|
|
78
84
|
page: any;
|
|
79
85
|
configs: HydrogenPageConfigs;
|
|
80
86
|
}
|
|
87
|
+
type WeaverseHydrogenLoaderData = {
|
|
88
|
+
weaverseData?: HydrogenPageData;
|
|
89
|
+
[key: string]: any;
|
|
90
|
+
};
|
|
81
91
|
interface WeaverseHydrogenRootProps {
|
|
82
92
|
components: Record<string, HydrogenComponent>;
|
|
83
|
-
data:
|
|
84
|
-
|
|
85
|
-
[key: string]: any;
|
|
86
|
-
};
|
|
93
|
+
data: WeaverseHydrogenLoaderData;
|
|
94
|
+
themeSchema?: InspectorGroup[];
|
|
87
95
|
}
|
|
88
96
|
|
|
89
97
|
/**
|
|
@@ -99,4 +107,4 @@ declare function weaverseLoader(args: LoaderArgs, components: Record<string, Hyd
|
|
|
99
107
|
|
|
100
108
|
declare let WeaverseHydrogenRoot: (props: WeaverseHydrogenRootProps) => React.JSX.Element;
|
|
101
109
|
|
|
102
|
-
export { ComponentFlags, HydrogenComponent, HydrogenComponentData, HydrogenComponentInstance, HydrogenComponentProps, HydrogenComponentSchema,
|
|
110
|
+
export { ComponentFlags, HydrogenComponent, HydrogenComponentData, HydrogenComponentInstance, HydrogenComponentPresets, HydrogenComponentProps, HydrogenComponentSchema, HydrogenElement, HydrogenPageConfigs, HydrogenPageData, InspectorGroup, TODO, WeaverseHydrogen, WeaverseHydrogenLoaderData, WeaverseHydrogenRoot, WeaverseHydrogenRootProps, WeaverseLoaderArgs, fetchWithServerCache, weaverseLoader };
|
package/dist/index.js
CHANGED
|
@@ -41,34 +41,34 @@ var import_react4 = __toESM(require("react"));
|
|
|
41
41
|
|
|
42
42
|
// src/context.ts
|
|
43
43
|
var import_react = require("@weaverse/react");
|
|
44
|
-
|
|
44
|
+
function createRootContext(init) {
|
|
45
|
+
return new import_react.Weaverse(init);
|
|
46
|
+
}
|
|
45
47
|
function createCachedContext(init) {
|
|
46
|
-
if (import_react.isBrowser
|
|
48
|
+
if (import_react.isBrowser) {
|
|
47
49
|
window.__weaverses = window.__weaverses || {};
|
|
48
|
-
|
|
49
|
-
|
|
50
|
+
let pathname = window.location.pathname;
|
|
51
|
+
if (!window.__weaverses[pathname]) {
|
|
52
|
+
window.__weaverses[pathname] = createRootContext(init);
|
|
50
53
|
}
|
|
51
|
-
return window.__weaverses[
|
|
54
|
+
return window.__weaverses[pathname];
|
|
52
55
|
}
|
|
53
56
|
return createRootContext(init);
|
|
54
57
|
}
|
|
55
|
-
function createWeaverseHydrogenContext(
|
|
56
|
-
let
|
|
58
|
+
function createWeaverseHydrogenContext(data, components) {
|
|
59
|
+
let weaverseData = data?.weaverseData || {};
|
|
60
|
+
let { page = {}, configs = {} } = weaverseData;
|
|
57
61
|
let weaverse = createCachedContext({
|
|
58
62
|
...configs,
|
|
59
63
|
data: page,
|
|
60
64
|
pageId: page?.id,
|
|
61
65
|
platformType: "shopify-hydrogen"
|
|
62
66
|
});
|
|
63
|
-
weaverse.elementInstances.clear();
|
|
64
67
|
Object.entries(components).forEach(([key, component]) => {
|
|
65
68
|
weaverse.registerElement({
|
|
66
69
|
type: component?.schema?.type || key,
|
|
67
70
|
Component: component?.default,
|
|
68
|
-
|
|
69
|
-
schema: component?.schema,
|
|
70
|
-
// @ts-ignore
|
|
71
|
-
template: component?.template
|
|
71
|
+
schema: component?.schema
|
|
72
72
|
});
|
|
73
73
|
});
|
|
74
74
|
return weaverse;
|
|
@@ -710,10 +710,11 @@ Weaverse2.WeaverseItemStore = WeaverseItemStore;
|
|
|
710
710
|
|
|
711
711
|
// src/hooks/use-studio.ts
|
|
712
712
|
var import_react2 = require("react");
|
|
713
|
-
function useStudio(weaverseCore) {
|
|
713
|
+
function useStudio(weaverseCore, themeSchema) {
|
|
714
714
|
(0, import_react2.useEffect)(() => {
|
|
715
715
|
if (weaverseCore.isDesignMode && isIframe && !window.weaverseStudioInitialized) {
|
|
716
716
|
window.weaverseStudioInitialized = true;
|
|
717
|
+
weaverseCore.themeSchema = themeSchema;
|
|
717
718
|
let host = weaverseCore.weaverseHost;
|
|
718
719
|
let version = weaverseCore.weaverseVersion || Date.now();
|
|
719
720
|
loadScript(`${host}/assets/studio/studio-bridge.js?v=${version}`).then(
|
|
@@ -725,10 +726,8 @@ function useStudio(weaverseCore) {
|
|
|
725
726
|
}
|
|
726
727
|
);
|
|
727
728
|
}
|
|
728
|
-
window.
|
|
729
|
-
|
|
730
|
-
});
|
|
731
|
-
}, []);
|
|
729
|
+
window.__weaverse = weaverseCore;
|
|
730
|
+
}, [weaverseCore]);
|
|
732
731
|
}
|
|
733
732
|
|
|
734
733
|
// src/fetch.ts
|
|
@@ -795,12 +794,15 @@ var fetchWithServerCache = async ({
|
|
|
795
794
|
// src/loader.ts
|
|
796
795
|
async function weaverseLoader(args, components) {
|
|
797
796
|
let { request, context, params } = args;
|
|
798
|
-
let {
|
|
797
|
+
let {
|
|
798
|
+
env,
|
|
799
|
+
storefront: { i18n }
|
|
800
|
+
} = context;
|
|
799
801
|
let queries = getRequestQueries(request);
|
|
800
|
-
let projectId = env?.WEAVERSE_PROJECT_ID;
|
|
801
|
-
let weaverseHost = env?.WEAVERSE_HOST;
|
|
802
|
-
if (!projectId
|
|
803
|
-
console.log("\u274C Missing `
|
|
802
|
+
let projectId = queries?.projectId || env?.WEAVERSE_PROJECT_ID;
|
|
803
|
+
let weaverseHost = env?.WEAVERSE_HOST || "https://weaverse.io";
|
|
804
|
+
if (!projectId) {
|
|
805
|
+
console.log("\u274C Missing `projectId`!");
|
|
804
806
|
return null;
|
|
805
807
|
}
|
|
806
808
|
let configs = {
|
|
@@ -809,14 +811,13 @@ async function weaverseLoader(args, components) {
|
|
|
809
811
|
...queries
|
|
810
812
|
};
|
|
811
813
|
try {
|
|
814
|
+
let projectAPI = `${weaverseHost}/api/public/project`;
|
|
815
|
+
let url = request.url;
|
|
812
816
|
let page = await fetchWithServerCache({
|
|
813
|
-
url:
|
|
817
|
+
url: projectAPI,
|
|
814
818
|
options: {
|
|
815
819
|
method: "POST",
|
|
816
|
-
body: JSON.stringify({
|
|
817
|
-
projectId,
|
|
818
|
-
url: request.url
|
|
819
|
-
})
|
|
820
|
+
body: JSON.stringify({ projectId, url, i18n })
|
|
820
821
|
},
|
|
821
822
|
context
|
|
822
823
|
}).then((r2) => r2.json()).catch((err) => {
|
|
@@ -859,11 +860,9 @@ async function weaverseLoader(args, components) {
|
|
|
859
860
|
// src/index.tsx
|
|
860
861
|
__reExport(src_exports, require("@weaverse/react"), module.exports);
|
|
861
862
|
var WeaverseHydrogenRoot = (props) => {
|
|
862
|
-
let { components, data } = props;
|
|
863
|
+
let { components, data, themeSchema } = props;
|
|
863
864
|
let weaverse = createWeaverseHydrogenContext(data, components);
|
|
864
|
-
useStudio(weaverse);
|
|
865
|
-
if (!weaverse?.data)
|
|
866
|
-
return /* @__PURE__ */ import_react4.default.createElement("div", null, "No Weaverse data!");
|
|
865
|
+
useStudio(weaverse, themeSchema);
|
|
867
866
|
return /* @__PURE__ */ import_react4.default.createElement(import_react3.WeaverseRoot, { context: weaverse });
|
|
868
867
|
};
|
|
869
868
|
// Annotate the CommonJS export names for ESM import in node:
|
package/dist/index.mjs
CHANGED
|
@@ -4,34 +4,34 @@ import React from "react";
|
|
|
4
4
|
|
|
5
5
|
// src/context.ts
|
|
6
6
|
import { Weaverse, isBrowser } from "@weaverse/react";
|
|
7
|
-
|
|
7
|
+
function createRootContext(init) {
|
|
8
|
+
return new Weaverse(init);
|
|
9
|
+
}
|
|
8
10
|
function createCachedContext(init) {
|
|
9
|
-
if (isBrowser
|
|
11
|
+
if (isBrowser) {
|
|
10
12
|
window.__weaverses = window.__weaverses || {};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
+
let pathname = window.location.pathname;
|
|
14
|
+
if (!window.__weaverses[pathname]) {
|
|
15
|
+
window.__weaverses[pathname] = createRootContext(init);
|
|
13
16
|
}
|
|
14
|
-
return window.__weaverses[
|
|
17
|
+
return window.__weaverses[pathname];
|
|
15
18
|
}
|
|
16
19
|
return createRootContext(init);
|
|
17
20
|
}
|
|
18
|
-
function createWeaverseHydrogenContext(
|
|
19
|
-
let
|
|
21
|
+
function createWeaverseHydrogenContext(data, components) {
|
|
22
|
+
let weaverseData = data?.weaverseData || {};
|
|
23
|
+
let { page = {}, configs = {} } = weaverseData;
|
|
20
24
|
let weaverse = createCachedContext({
|
|
21
25
|
...configs,
|
|
22
26
|
data: page,
|
|
23
27
|
pageId: page?.id,
|
|
24
28
|
platformType: "shopify-hydrogen"
|
|
25
29
|
});
|
|
26
|
-
weaverse.elementInstances.clear();
|
|
27
30
|
Object.entries(components).forEach(([key, component]) => {
|
|
28
31
|
weaverse.registerElement({
|
|
29
32
|
type: component?.schema?.type || key,
|
|
30
33
|
Component: component?.default,
|
|
31
|
-
|
|
32
|
-
schema: component?.schema,
|
|
33
|
-
// @ts-ignore
|
|
34
|
-
template: component?.template
|
|
34
|
+
schema: component?.schema
|
|
35
35
|
});
|
|
36
36
|
});
|
|
37
37
|
return weaverse;
|
|
@@ -673,10 +673,11 @@ Weaverse2.WeaverseItemStore = WeaverseItemStore;
|
|
|
673
673
|
|
|
674
674
|
// src/hooks/use-studio.ts
|
|
675
675
|
import { useEffect } from "react";
|
|
676
|
-
function useStudio(weaverseCore) {
|
|
676
|
+
function useStudio(weaverseCore, themeSchema) {
|
|
677
677
|
useEffect(() => {
|
|
678
678
|
if (weaverseCore.isDesignMode && isIframe && !window.weaverseStudioInitialized) {
|
|
679
679
|
window.weaverseStudioInitialized = true;
|
|
680
|
+
weaverseCore.themeSchema = themeSchema;
|
|
680
681
|
let host = weaverseCore.weaverseHost;
|
|
681
682
|
let version = weaverseCore.weaverseVersion || Date.now();
|
|
682
683
|
loadScript(`${host}/assets/studio/studio-bridge.js?v=${version}`).then(
|
|
@@ -688,10 +689,8 @@ function useStudio(weaverseCore) {
|
|
|
688
689
|
}
|
|
689
690
|
);
|
|
690
691
|
}
|
|
691
|
-
window.
|
|
692
|
-
|
|
693
|
-
});
|
|
694
|
-
}, []);
|
|
692
|
+
window.__weaverse = weaverseCore;
|
|
693
|
+
}, [weaverseCore]);
|
|
695
694
|
}
|
|
696
695
|
|
|
697
696
|
// src/fetch.ts
|
|
@@ -758,12 +757,15 @@ var fetchWithServerCache = async ({
|
|
|
758
757
|
// src/loader.ts
|
|
759
758
|
async function weaverseLoader(args, components) {
|
|
760
759
|
let { request, context, params } = args;
|
|
761
|
-
let {
|
|
760
|
+
let {
|
|
761
|
+
env,
|
|
762
|
+
storefront: { i18n }
|
|
763
|
+
} = context;
|
|
762
764
|
let queries = getRequestQueries(request);
|
|
763
|
-
let projectId = env?.WEAVERSE_PROJECT_ID;
|
|
764
|
-
let weaverseHost = env?.WEAVERSE_HOST;
|
|
765
|
-
if (!projectId
|
|
766
|
-
console.log("\u274C Missing `
|
|
765
|
+
let projectId = queries?.projectId || env?.WEAVERSE_PROJECT_ID;
|
|
766
|
+
let weaverseHost = env?.WEAVERSE_HOST || "https://weaverse.io";
|
|
767
|
+
if (!projectId) {
|
|
768
|
+
console.log("\u274C Missing `projectId`!");
|
|
767
769
|
return null;
|
|
768
770
|
}
|
|
769
771
|
let configs = {
|
|
@@ -772,14 +774,13 @@ async function weaverseLoader(args, components) {
|
|
|
772
774
|
...queries
|
|
773
775
|
};
|
|
774
776
|
try {
|
|
777
|
+
let projectAPI = `${weaverseHost}/api/public/project`;
|
|
778
|
+
let url = request.url;
|
|
775
779
|
let page = await fetchWithServerCache({
|
|
776
|
-
url:
|
|
780
|
+
url: projectAPI,
|
|
777
781
|
options: {
|
|
778
782
|
method: "POST",
|
|
779
|
-
body: JSON.stringify({
|
|
780
|
-
projectId,
|
|
781
|
-
url: request.url
|
|
782
|
-
})
|
|
783
|
+
body: JSON.stringify({ projectId, url, i18n })
|
|
783
784
|
},
|
|
784
785
|
context
|
|
785
786
|
}).then((r2) => r2.json()).catch((err) => {
|
|
@@ -822,11 +823,9 @@ async function weaverseLoader(args, components) {
|
|
|
822
823
|
// src/index.tsx
|
|
823
824
|
export * from "@weaverse/react";
|
|
824
825
|
var WeaverseHydrogenRoot = (props) => {
|
|
825
|
-
let { components, data } = props;
|
|
826
|
+
let { components, data, themeSchema } = props;
|
|
826
827
|
let weaverse = createWeaverseHydrogenContext(data, components);
|
|
827
|
-
useStudio(weaverse);
|
|
828
|
-
if (!weaverse?.data)
|
|
829
|
-
return /* @__PURE__ */ React.createElement("div", null, "No Weaverse data!");
|
|
828
|
+
useStudio(weaverse, themeSchema);
|
|
830
829
|
return /* @__PURE__ */ React.createElement(WeaverseRoot, { context: weaverse });
|
|
831
830
|
};
|
|
832
831
|
export {
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.0.
|
|
2
|
+
"version": "1.0.50",
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"typings": "dist/index.d.ts",
|
|
@@ -32,10 +32,10 @@
|
|
|
32
32
|
"name": "@weaverse/hydrogen",
|
|
33
33
|
"author": "Weaverse Team",
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@shopify/hydrogen": "2023.4.
|
|
36
|
-
"@weaverse/react": "1.0.
|
|
35
|
+
"@shopify/hydrogen": "2023.4.5",
|
|
36
|
+
"@weaverse/react": "1.0.50"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
|
-
"@shopify/remix-oxygen": "^1.
|
|
39
|
+
"@shopify/remix-oxygen": "^1.1.1"
|
|
40
40
|
}
|
|
41
41
|
}
|