@weaverse/hydrogen 1.0.23 → 1.0.24

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 CHANGED
@@ -1,20 +1,22 @@
1
- import { Weaverse, WeaverseType, WeaverseElement } from '@weaverse/core';
1
+ import { Weaverse } from '@weaverse/core';
2
2
  import { LoaderArgs } from '@remix-run/server-runtime';
3
3
 
4
- type WHFetchConfigs = {
5
- weaverseHost?: string;
4
+ type WeaverseHydrogenConfigs = {
6
5
  projectId: string;
7
- url: URL;
6
+ weaverseHost: string;
7
+ components: {
8
+ [key: string]: any;
9
+ };
8
10
  };
9
- declare let fetchPageData: ({ weaverseHost, projectId, url, }: WHFetchConfigs) => Promise<any>;
11
+
10
12
  declare let useStudio: (weaverseCore: Weaverse) => void;
11
13
 
12
- declare function weaverseLoader({ request, context, params, }: LoaderArgs): Promise<any>;
14
+ declare function weaverseLoader({ request, context, params }: LoaderArgs, weaverseConfig: WeaverseHydrogenConfigs): Promise<any>;
13
15
 
14
- declare let createHydrogenRootContext: (configs: WeaverseType, elements?: {
15
- [key: string]: WeaverseElement;
16
- }) => Weaverse;
17
- declare let createWeaverseHydrogenContext: (configs: WeaverseType) => Weaverse;
18
- declare let WeaverseHydrogenRoot: () => JSX.Element;
16
+ declare let useWeaverseHydrogen: (weaverseHydrogenConfigs: WeaverseHydrogenConfigs, data: any) => Weaverse;
17
+ declare let WeaverseHydrogenRoot: ({ configs, data, }: {
18
+ configs: WeaverseHydrogenConfigs;
19
+ data: any;
20
+ }) => JSX.Element;
19
21
 
20
- export { WHFetchConfigs, WeaverseHydrogenRoot, createHydrogenRootContext, createWeaverseHydrogenContext, fetchPageData, useStudio, weaverseLoader };
22
+ export { WeaverseHydrogenRoot, useStudio, useWeaverseHydrogen, weaverseLoader };
package/dist/index.js CHANGED
@@ -31,47 +31,19 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
31
31
  var src_exports = {};
32
32
  __export(src_exports, {
33
33
  WeaverseHydrogenRoot: () => WeaverseHydrogenRoot,
34
- createHydrogenRootContext: () => createHydrogenRootContext,
35
- createWeaverseHydrogenContext: () => createWeaverseHydrogenContext,
36
- fetchPageData: () => fetchPageData,
37
34
  useStudio: () => useStudio,
35
+ useWeaverseHydrogen: () => useWeaverseHydrogen,
38
36
  weaverseLoader: () => weaverseLoader
39
37
  });
40
38
  module.exports = __toCommonJS(src_exports);
41
39
 
42
- // src/elements/index.ts
43
- var elements = {};
44
- var elements_default = elements;
45
-
46
- // src/index.tsx
47
- var import_core2 = require("@weaverse/core");
48
-
49
40
  // src/utils.ts
50
41
  var import_core = require("@weaverse/core");
51
42
  var import_react = require("react");
52
- var fetchPageData = async ({
53
- weaverseHost = "https://studio.weaverse.io",
54
- projectId,
55
- url
56
- }) => {
57
- let handle = url.pathname;
58
- let isDesignMode = url.searchParams.get("isDesignMode") === "true";
59
- let data = await fetch(weaverseHost + "/api/public/project", {
60
- method: "POST",
61
- body: JSON.stringify({
62
- projectId,
63
- handle,
64
- isDesignMode
65
- })
66
- }).then((res) => res.json()).catch((e) => {
67
- console.error(e);
68
- return {};
69
- });
70
- return { ...data, weaverseHost, isDesignMode };
71
- };
72
43
  var useStudio = (weaverseCore) => {
73
44
  (0, import_react.useEffect)(() => {
74
45
  if (weaverseCore.isDesignMode && import_core.isIframe && !window.weaverseStudioInitialized) {
46
+ console.log("useStudio", weaverseCore);
75
47
  window.weaverseStudioInitialized = true;
76
48
  let host = weaverseCore.weaverseHost;
77
49
  let version = weaverseCore.weaverseVersion || Date.now();
@@ -89,47 +61,74 @@ var useStudio = (weaverseCore) => {
89
61
 
90
62
  // src/index.tsx
91
63
  var import_react2 = __toESM(require("react"));
64
+ var import_react3 = require("@weaverse/react");
92
65
 
93
66
  // src/weaverse-loader.ts
94
- async function weaverseLoader({
95
- request,
96
- context,
97
- params
98
- }) {
67
+ async function weaverseLoader({ request, context, params }, weaverseConfig) {
68
+ let fetchBody = {
69
+ projectId: weaverseConfig.projectId,
70
+ url: request.url
71
+ };
72
+ let response = await fetch(
73
+ `${weaverseConfig.weaverseHost}/api/public/project`,
74
+ {
75
+ method: "POST",
76
+ headers: {
77
+ "Content-Type": "application/json"
78
+ },
79
+ body: JSON.stringify(fetchBody)
80
+ }
81
+ ).then((res) => res.json());
99
82
  return {
100
- foo: "bar"
83
+ weaversePageData: response
101
84
  };
102
85
  }
103
86
 
104
87
  // src/index.tsx
105
- var createHydrogenRootContext = (configs, elements2 = {}) => {
106
- let rootContext = new import_core2.Weaverse(configs);
107
- Object.keys(elements2).forEach((key) => {
108
- rootContext.registerElement(elements2[key]);
88
+ var createHydrogenRootContext = (configs, elements = {}) => {
89
+ let rootContext = (0, import_react3.createRootContext)(configs);
90
+ Object.keys(elements).forEach((key) => {
91
+ rootContext.registerElement(elements[key]);
109
92
  });
110
93
  return rootContext;
111
94
  };
112
- var createWeaverseHydrogenContext = (configs) => {
113
- let context = createHydrogenRootContext(configs);
114
- Object.keys(elements_default).forEach((key) => {
115
- context.registerElement(elements_default[key]);
116
- });
117
- return context;
118
- };
119
- var WeaverseHydrogenRoot = () => {
95
+ var useWeaverseHydrogen = (weaverseHydrogenConfigs, data) => {
96
+ let weaversePageData = data?.weaverseData?.weaversePageData;
97
+ let { components, ...rest } = weaverseHydrogenConfigs;
120
98
  let weaverse = createHydrogenRootContext({
99
+ ...rest,
100
+ data: weaversePageData,
101
+ pageId: weaversePageData?.pageId,
121
102
  isDesignMode: true,
122
103
  platformType: "shopify-hydrogen"
123
104
  });
105
+ Object.keys(components).forEach((key) => {
106
+ let component = components[key];
107
+ weaverse.registerElement({
108
+ type: components[key]?.schema?.type || key,
109
+ Component: component?.default,
110
+ schema: component?.schema,
111
+ defaultCss: component?.css,
112
+ permanentCss: component?.permanentCss
113
+ });
114
+ });
124
115
  useStudio(weaverse);
125
- return /* @__PURE__ */ import_react2.default.createElement("div", null, /* @__PURE__ */ import_react2.default.createElement("div", { id: "weaverse-test" }, "hello world from weaverse hydrogen"));
116
+ return weaverse;
117
+ };
118
+ var WeaverseHydrogenRoot = ({
119
+ configs,
120
+ data
121
+ }) => {
122
+ let weaverse = useWeaverseHydrogen(configs, data);
123
+ if (!weaverse?.data) {
124
+ return /* @__PURE__ */ import_react2.default.createElement("div", null, "404");
125
+ }
126
+ return /* @__PURE__ */ import_react2.default.createElement(import_react3.WeaverseRoot, { context: weaverse });
126
127
  };
127
128
  // Annotate the CommonJS export names for ESM import in node:
128
129
  0 && (module.exports = {
129
130
  WeaverseHydrogenRoot,
130
- createHydrogenRootContext,
131
- createWeaverseHydrogenContext,
132
- fetchPageData,
133
131
  useStudio,
132
+ useWeaverseHydrogen,
134
133
  weaverseLoader
135
134
  });
package/dist/index.mjs CHANGED
@@ -1,36 +1,10 @@
1
- // src/elements/index.ts
2
- var elements = {};
3
- var elements_default = elements;
4
-
5
- // src/index.tsx
6
- import { Weaverse } from "@weaverse/core";
7
-
8
1
  // src/utils.ts
9
2
  import { isIframe, loadScript } from "@weaverse/core";
10
3
  import { useEffect } from "react";
11
- var fetchPageData = async ({
12
- weaverseHost = "https://studio.weaverse.io",
13
- projectId,
14
- url
15
- }) => {
16
- let handle = url.pathname;
17
- let isDesignMode = url.searchParams.get("isDesignMode") === "true";
18
- let data = await fetch(weaverseHost + "/api/public/project", {
19
- method: "POST",
20
- body: JSON.stringify({
21
- projectId,
22
- handle,
23
- isDesignMode
24
- })
25
- }).then((res) => res.json()).catch((e) => {
26
- console.error(e);
27
- return {};
28
- });
29
- return { ...data, weaverseHost, isDesignMode };
30
- };
31
4
  var useStudio = (weaverseCore) => {
32
5
  useEffect(() => {
33
6
  if (weaverseCore.isDesignMode && isIframe && !window.weaverseStudioInitialized) {
7
+ console.log("useStudio", weaverseCore);
34
8
  window.weaverseStudioInitialized = true;
35
9
  let host = weaverseCore.weaverseHost;
36
10
  let version = weaverseCore.weaverseVersion || Date.now();
@@ -48,46 +22,73 @@ var useStudio = (weaverseCore) => {
48
22
 
49
23
  // src/index.tsx
50
24
  import React from "react";
25
+ import { WeaverseRoot, createRootContext } from "@weaverse/react";
51
26
 
52
27
  // src/weaverse-loader.ts
53
- async function weaverseLoader({
54
- request,
55
- context,
56
- params
57
- }) {
28
+ async function weaverseLoader({ request, context, params }, weaverseConfig) {
29
+ let fetchBody = {
30
+ projectId: weaverseConfig.projectId,
31
+ url: request.url
32
+ };
33
+ let response = await fetch(
34
+ `${weaverseConfig.weaverseHost}/api/public/project`,
35
+ {
36
+ method: "POST",
37
+ headers: {
38
+ "Content-Type": "application/json"
39
+ },
40
+ body: JSON.stringify(fetchBody)
41
+ }
42
+ ).then((res) => res.json());
58
43
  return {
59
- foo: "bar"
44
+ weaversePageData: response
60
45
  };
61
46
  }
62
47
 
63
48
  // src/index.tsx
64
- var createHydrogenRootContext = (configs, elements2 = {}) => {
65
- let rootContext = new Weaverse(configs);
66
- Object.keys(elements2).forEach((key) => {
67
- rootContext.registerElement(elements2[key]);
49
+ var createHydrogenRootContext = (configs, elements = {}) => {
50
+ let rootContext = createRootContext(configs);
51
+ Object.keys(elements).forEach((key) => {
52
+ rootContext.registerElement(elements[key]);
68
53
  });
69
54
  return rootContext;
70
55
  };
71
- var createWeaverseHydrogenContext = (configs) => {
72
- let context = createHydrogenRootContext(configs);
73
- Object.keys(elements_default).forEach((key) => {
74
- context.registerElement(elements_default[key]);
75
- });
76
- return context;
77
- };
78
- var WeaverseHydrogenRoot = () => {
56
+ var useWeaverseHydrogen = (weaverseHydrogenConfigs, data) => {
57
+ let weaversePageData = data?.weaverseData?.weaversePageData;
58
+ let { components, ...rest } = weaverseHydrogenConfigs;
79
59
  let weaverse = createHydrogenRootContext({
60
+ ...rest,
61
+ data: weaversePageData,
62
+ pageId: weaversePageData?.pageId,
80
63
  isDesignMode: true,
81
64
  platformType: "shopify-hydrogen"
82
65
  });
66
+ Object.keys(components).forEach((key) => {
67
+ let component = components[key];
68
+ weaverse.registerElement({
69
+ type: components[key]?.schema?.type || key,
70
+ Component: component?.default,
71
+ schema: component?.schema,
72
+ defaultCss: component?.css,
73
+ permanentCss: component?.permanentCss
74
+ });
75
+ });
83
76
  useStudio(weaverse);
84
- return /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("div", { id: "weaverse-test" }, "hello world from weaverse hydrogen"));
77
+ return weaverse;
78
+ };
79
+ var WeaverseHydrogenRoot = ({
80
+ configs,
81
+ data
82
+ }) => {
83
+ let weaverse = useWeaverseHydrogen(configs, data);
84
+ if (!weaverse?.data) {
85
+ return /* @__PURE__ */ React.createElement("div", null, "404");
86
+ }
87
+ return /* @__PURE__ */ React.createElement(WeaverseRoot, { context: weaverse });
85
88
  };
86
89
  export {
87
90
  WeaverseHydrogenRoot,
88
- createHydrogenRootContext,
89
- createWeaverseHydrogenContext,
90
- fetchPageData,
91
91
  useStudio,
92
+ useWeaverseHydrogen,
92
93
  weaverseLoader
93
94
  };
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.0.23",
2
+ "version": "1.0.24",
3
3
  "license": "MIT",
4
4
  "main": "dist/index.js",
5
5
  "typings": "dist/index.d.ts",
@@ -15,8 +15,8 @@
15
15
  },
16
16
  "scripts": {
17
17
  "start": "npm run dev",
18
- "dev": "tsup src/index.tsx --format esm,cjs --dts --outDir dist --watch --external react @shopify/hydrogen",
19
- "build": "tsup src/index.tsx --format esm,cjs --dts --outDir dist --external react @shopify/hydrogen",
18
+ "dev": "tsup src/index.tsx --format esm,cjs --dts --outDir dist --watch --external react",
19
+ "build": "tsup src/index.tsx --format esm,cjs --dts --outDir dist --external react",
20
20
  "clean": "rimraf dist",
21
21
  "prepublish": "npm run build"
22
22
  },
@@ -32,7 +32,8 @@
32
32
  "name": "@weaverse/hydrogen",
33
33
  "author": "Weaverse Team",
34
34
  "dependencies": {
35
- "@weaverse/core": "1.0.23",
35
+ "@weaverse/react": "1.0.24",
36
+ "@weaverse/core": "1.0.24",
36
37
  "@shopify/hydrogen": "2023.1.6"
37
38
  }
38
39
  }