@weaverse/hydrogen 1.0.22 → 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,103 +31,104 @@ 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
- (0, import_core.loadScript)(
77
- `${weaverseCore.weaverseHost}/assets/studio/studio-bridge.js?t=${Date.now()}`
78
- ).then(() => {
79
- window?.createWeaverseStudioBridge(weaverseCore);
80
- setTimeout(() => {
81
- weaverseCore.triggerUpdate();
82
- }, 2e3);
83
- });
48
+ let host = weaverseCore.weaverseHost;
49
+ let version = weaverseCore.weaverseVersion || Date.now();
50
+ (0, import_core.loadScript)(`${host}/assets/studio/studio-bridge.js?v=${version}`).then(
51
+ () => {
52
+ window?.createWeaverseStudioBridge(weaverseCore);
53
+ setTimeout(() => {
54
+ weaverseCore.triggerUpdate();
55
+ }, 2e3);
56
+ }
57
+ );
84
58
  }
85
59
  }, []);
86
60
  };
87
61
 
88
62
  // src/index.tsx
89
63
  var import_react2 = __toESM(require("react"));
64
+ var import_react3 = require("@weaverse/react");
90
65
 
91
66
  // src/weaverse-loader.ts
92
- async function weaverseLoader({
93
- request,
94
- context,
95
- params
96
- }) {
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());
97
82
  return {
98
- foo: "bar"
83
+ weaversePageData: response
99
84
  };
100
85
  }
101
86
 
102
87
  // src/index.tsx
103
- var createHydrogenRootContext = (configs, elements2 = {}) => {
104
- let rootContext = new import_core2.Weaverse(configs);
105
- Object.keys(elements2).forEach((key) => {
106
- 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]);
107
92
  });
108
93
  return rootContext;
109
94
  };
110
- var createWeaverseHydrogenContext = (configs) => {
111
- let context = createHydrogenRootContext(configs);
112
- Object.keys(elements_default).forEach((key) => {
113
- context.registerElement(elements_default[key]);
114
- });
115
- return context;
116
- };
117
- var WeaverseHydrogenRoot = () => {
95
+ var useWeaverseHydrogen = (weaverseHydrogenConfigs, data) => {
96
+ let weaversePageData = data?.weaverseData?.weaversePageData;
97
+ let { components, ...rest } = weaverseHydrogenConfigs;
118
98
  let weaverse = createHydrogenRootContext({
99
+ ...rest,
100
+ data: weaversePageData,
101
+ pageId: weaversePageData?.pageId,
119
102
  isDesignMode: true,
120
103
  platformType: "shopify-hydrogen"
121
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
+ });
122
115
  useStudio(weaverse);
123
- 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 });
124
127
  };
125
128
  // Annotate the CommonJS export names for ESM import in node:
126
129
  0 && (module.exports = {
127
130
  WeaverseHydrogenRoot,
128
- createHydrogenRootContext,
129
- createWeaverseHydrogenContext,
130
- fetchPageData,
131
131
  useStudio,
132
+ useWeaverseHydrogen,
132
133
  weaverseLoader
133
134
  });
package/dist/index.mjs CHANGED
@@ -1,91 +1,94 @@
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
- loadScript(
36
- `${weaverseCore.weaverseHost}/assets/studio/studio-bridge.js?t=${Date.now()}`
37
- ).then(() => {
38
- window?.createWeaverseStudioBridge(weaverseCore);
39
- setTimeout(() => {
40
- weaverseCore.triggerUpdate();
41
- }, 2e3);
42
- });
9
+ let host = weaverseCore.weaverseHost;
10
+ let version = weaverseCore.weaverseVersion || Date.now();
11
+ loadScript(`${host}/assets/studio/studio-bridge.js?v=${version}`).then(
12
+ () => {
13
+ window?.createWeaverseStudioBridge(weaverseCore);
14
+ setTimeout(() => {
15
+ weaverseCore.triggerUpdate();
16
+ }, 2e3);
17
+ }
18
+ );
43
19
  }
44
20
  }, []);
45
21
  };
46
22
 
47
23
  // src/index.tsx
48
24
  import React from "react";
25
+ import { WeaverseRoot, createRootContext } from "@weaverse/react";
49
26
 
50
27
  // src/weaverse-loader.ts
51
- async function weaverseLoader({
52
- request,
53
- context,
54
- params
55
- }) {
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());
56
43
  return {
57
- foo: "bar"
44
+ weaversePageData: response
58
45
  };
59
46
  }
60
47
 
61
48
  // src/index.tsx
62
- var createHydrogenRootContext = (configs, elements2 = {}) => {
63
- let rootContext = new Weaverse(configs);
64
- Object.keys(elements2).forEach((key) => {
65
- 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]);
66
53
  });
67
54
  return rootContext;
68
55
  };
69
- var createWeaverseHydrogenContext = (configs) => {
70
- let context = createHydrogenRootContext(configs);
71
- Object.keys(elements_default).forEach((key) => {
72
- context.registerElement(elements_default[key]);
73
- });
74
- return context;
75
- };
76
- var WeaverseHydrogenRoot = () => {
56
+ var useWeaverseHydrogen = (weaverseHydrogenConfigs, data) => {
57
+ let weaversePageData = data?.weaverseData?.weaversePageData;
58
+ let { components, ...rest } = weaverseHydrogenConfigs;
77
59
  let weaverse = createHydrogenRootContext({
60
+ ...rest,
61
+ data: weaversePageData,
62
+ pageId: weaversePageData?.pageId,
78
63
  isDesignMode: true,
79
64
  platformType: "shopify-hydrogen"
80
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
+ });
81
76
  useStudio(weaverse);
82
- 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 });
83
88
  };
84
89
  export {
85
90
  WeaverseHydrogenRoot,
86
- createHydrogenRootContext,
87
- createWeaverseHydrogenContext,
88
- fetchPageData,
89
91
  useStudio,
92
+ useWeaverseHydrogen,
90
93
  weaverseLoader
91
94
  };
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.0.22",
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.22",
35
+ "@weaverse/react": "1.0.24",
36
+ "@weaverse/core": "1.0.24",
36
37
  "@shopify/hydrogen": "2023.1.6"
37
38
  }
38
39
  }