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