@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 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<'isSection', boolean>>;
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 HydrogenComponentProps<D = unknown, L = unknown> extends WeaverseElement {
43
- data: D & {
44
- className?: string;
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 HydrogenComponentTemplate = any;
56
+ type HydrogenComponentPresets = {
57
+ type: string;
58
+ children?: HydrogenComponentPresets[];
59
+ };
53
60
  interface HydrogenElement {
54
- Component: ForwardRefExoticComponent<any>;
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
- weaverseData?: HydrogenPageData;
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, HydrogenComponentTemplate, HydrogenElement, HydrogenPageConfigs, HydrogenPageData, 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
@@ -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
- var createRootContext = (init) => new import_react.Weaverse(init);
44
+ function createRootContext(init) {
45
+ return new import_react.Weaverse(init);
46
+ }
45
47
  function createCachedContext(init) {
46
- if (import_react.isBrowser && init.pageId) {
48
+ if (import_react.isBrowser) {
47
49
  window.__weaverses = window.__weaverses || {};
48
- if (!window.__weaverses[init.pageId]) {
49
- window.__weaverses[init.pageId] = createRootContext(init);
50
+ let pathname = window.location.pathname;
51
+ if (!window.__weaverses[pathname]) {
52
+ window.__weaverses[pathname] = createRootContext(init);
50
53
  }
51
- return window.__weaverses[init.pageId];
54
+ return window.__weaverses[pathname];
52
55
  }
53
56
  return createRootContext(init);
54
57
  }
55
- function createWeaverseHydrogenContext({ weaverseData }, components) {
56
- let { page = {}, configs = {} } = weaverseData || {};
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
- // @ts-ignore
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.requestAnimationFrame(() => {
729
- window.__weaverse = weaverseCore;
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 { env } = context;
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 || !weaverseHost) {
803
- 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`!");
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: `${weaverseHost}/api/public/project`,
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
- var createRootContext = (init) => new Weaverse(init);
7
+ function createRootContext(init) {
8
+ return new Weaverse(init);
9
+ }
8
10
  function createCachedContext(init) {
9
- if (isBrowser && init.pageId) {
11
+ if (isBrowser) {
10
12
  window.__weaverses = window.__weaverses || {};
11
- if (!window.__weaverses[init.pageId]) {
12
- window.__weaverses[init.pageId] = createRootContext(init);
13
+ let pathname = window.location.pathname;
14
+ if (!window.__weaverses[pathname]) {
15
+ window.__weaverses[pathname] = createRootContext(init);
13
16
  }
14
- return window.__weaverses[init.pageId];
17
+ return window.__weaverses[pathname];
15
18
  }
16
19
  return createRootContext(init);
17
20
  }
18
- function createWeaverseHydrogenContext({ weaverseData }, components) {
19
- let { page = {}, configs = {} } = weaverseData || {};
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
- // @ts-ignore
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.requestAnimationFrame(() => {
692
- window.__weaverse = weaverseCore;
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 { env } = context;
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 || !weaverseHost) {
766
- 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`!");
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: `${weaverseHost}/api/public/project`,
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.48",
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.3",
36
- "@weaverse/react": "1.0.48"
35
+ "@shopify/hydrogen": "2023.4.5",
36
+ "@weaverse/react": "1.0.50"
37
37
  },
38
38
  "devDependencies": {
39
- "@shopify/remix-oxygen": "^1.0.7"
39
+ "@shopify/remix-oxygen": "^1.1.1"
40
40
  }
41
41
  }