@weaverse/react 1.0.55 → 1.0.57

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.mts CHANGED
@@ -1,4 +1,3 @@
1
- import * as _weaverse_core from '@weaverse/core';
2
1
  import { Weaverse, ElementCSS, WeaverseItemStore } from '@weaverse/core';
3
2
  export * from '@weaverse/core';
4
3
  import * as react from 'react';
@@ -22,6 +21,6 @@ type ItemComponentProps = {
22
21
  };
23
22
 
24
23
  declare let WeaverseRoot: react__default.MemoExoticComponent<({ context }: WeaverseRootPropsType) => react__default.JSX.Element | null>;
25
- declare let useWeaverse: () => _weaverse_core.Weaverse;
24
+ declare function useWeaverse<T = Weaverse>(): T;
26
25
 
27
26
  export { ItemComponentProps, WeaverseContext, WeaverseContextConsumer, WeaverseContextProvider, WeaverseElementProps, WeaverseRoot, WeaverseRootPropsType, useWeaverse };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- import * as _weaverse_core from '@weaverse/core';
2
1
  import { Weaverse, ElementCSS, WeaverseItemStore } from '@weaverse/core';
3
2
  export * from '@weaverse/core';
4
3
  import * as react from 'react';
@@ -22,6 +21,6 @@ type ItemComponentProps = {
22
21
  };
23
22
 
24
23
  declare let WeaverseRoot: react__default.MemoExoticComponent<({ context }: WeaverseRootPropsType) => react__default.JSX.Element | null>;
25
- declare let useWeaverse: () => _weaverse_core.Weaverse;
24
+ declare function useWeaverse<T = Weaverse>(): T;
26
25
 
27
26
  export { ItemComponentProps, WeaverseContext, WeaverseContextConsumer, WeaverseContextProvider, WeaverseElementProps, WeaverseRoot, WeaverseRootPropsType, useWeaverse };
package/dist/index.js CHANGED
@@ -50,7 +50,7 @@ var WeaverseContextConsumer = WeaverseContext.Consumer;
50
50
  var import_core = require("@weaverse/core");
51
51
  var import_react2 = __toESM(require("react"));
52
52
 
53
- // ../../node_modules/clsx/dist/clsx.m.js
53
+ // ../../node_modules/clsx/dist/clsx.mjs
54
54
  function r(e) {
55
55
  var t, f, n = "";
56
56
  if ("string" == typeof e || "number" == typeof e)
@@ -69,7 +69,7 @@ function clsx() {
69
69
  (e = arguments[f++]) && (t = r(e)) && (n && (n += " "), n += t);
70
70
  return n;
71
71
  }
72
- var clsx_m_default = clsx;
72
+ var clsx_default = clsx;
73
73
 
74
74
  // src/utils/css.ts
75
75
  function formatCSS(css) {
@@ -99,7 +99,7 @@ function generateItemClassName(instance, stitchesInstance) {
99
99
  let newStitchesClass = stitchesInstance.css(formattedCss)().className || "";
100
100
  let { stitchesClass } = instance;
101
101
  let otherClass = (instance.ref.current?.className || "").replace(stitchesClass, "").replace(cls, "").replace(permanentClass, "").trim();
102
- className = clsx_m_default(permanentClass, cls, newStitchesClass, otherClass);
102
+ className = clsx_default(permanentClass, cls, newStitchesClass, otherClass);
103
103
  instance.stitchesClass = newStitchesClass;
104
104
  }
105
105
  return className;
@@ -179,7 +179,7 @@ var ItemComponent = (0, import_react2.memo)(({ instance }) => {
179
179
  key: id,
180
180
  "data-wv-type": type,
181
181
  "data-wv-id": id,
182
- className: clsx_m_default(
182
+ className: clsx_default(
183
183
  platformType !== "shopify-hydrogen" && generateItemClassName(instance, stitchesInstance),
184
184
  rest?.data?.className
185
185
  ),
@@ -193,10 +193,10 @@ var ItemComponent = (0, import_react2.memo)(({ instance }) => {
193
193
  return null;
194
194
  }
195
195
  });
196
- var useWeaverse = () => {
196
+ function useWeaverse() {
197
197
  let weaverse = (0, import_react2.useContext)(WeaverseContext);
198
198
  return weaverse;
199
- };
199
+ }
200
200
  var ItemInstance = (0, import_react2.memo)(({ id }) => {
201
201
  let weaverse = useWeaverse();
202
202
  let { itemInstances } = weaverse;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/context.ts","../src/renderer.tsx","../../../node_modules/clsx/dist/clsx.m.js","../src/utils/css.ts"],"sourcesContent":["export * from '@weaverse/core'\nexport * from './context'\nexport * from './renderer'\nexport * from './types'\n","import { type Weaverse } from '@weaverse/core'\nimport { createContext } from 'react'\n\nexport let WeaverseContext = createContext<Weaverse>({} as Weaverse)\nexport let WeaverseContextProvider = WeaverseContext.Provider\nexport let WeaverseContextConsumer = WeaverseContext.Consumer\n","/* eslint-disable react/no-children-prop */\nimport type { ElementData, WeaverseProjectDataType } from '@weaverse/core'\nimport { isBrowser } from '@weaverse/core'\nimport React, { memo, useContext, useEffect, useRef, useState } from 'react'\nimport { WeaverseContext, WeaverseContextProvider } from './context'\nimport type { ItemComponentProps, WeaverseRootPropsType } from './types'\nimport { generateItemClassName } from './utils/css'\nimport clsx from 'clsx'\n\nexport let WeaverseRoot = memo(({ context }: WeaverseRootPropsType) => {\n if (isBrowser) {\n console.log('💿 Weaverse root', context)\n }\n let [, setData] = useState<WeaverseProjectDataType | unknown>(context.data)\n let rootRef = useRef<HTMLElement>()\n let renderRoot = () => setData({})\n\n useEffect(() => {\n context.subscribe(renderRoot)\n context.contentRootElement = rootRef.current\n return () => {\n context.unsubscribe(renderRoot)\n }\n }, [])\n\n let eventHandlers = context?.studioBridge?.eventHandlers || {}\n let themeClass = context.stitchesInstance.theme.className\n\n if (context.projectId) {\n return (\n <div\n className={`weaverse-content-root ${themeClass}`}\n {...eventHandlers}\n ref={rootRef}\n data-weaverse-project-id={context.projectId}\n >\n <WeaverseContextProvider value={context}>\n <ItemInstance id={context.data.rootId || context.projectId} />\n </WeaverseContextProvider>\n </div>\n )\n }\n return null\n})\n\nconst ItemComponent = memo(({ instance }: ItemComponentProps) => {\n let context = useContext(WeaverseContext)\n let { stitchesInstance, elementInstances, platformType } = context\n let [data, setData] = useState<ElementData>(instance.data)\n let {\n id,\n type,\n childIds = [],\n children = [],\n parentId,\n createdAt,\n updatedAt,\n deletedAt,\n css,\n __hidden,\n ...rest\n } = data\n\n useEffect(() => {\n let render = (data: ElementData) => setData({ ...data })\n instance.subscribe(render)\n if (isBrowser && !instance.ref.current) {\n // Fallback `ref` if the element isn't created by `React.forwardRef`\n Object.assign(instance.ref, {\n current: document.querySelector(`[data-wv-id=\"${id}\"]`),\n })\n }\n return () => instance.unsubscribe(render)\n }, [])\n\n let Element = elementInstances.get(type)\n\n if (Element?.Component) {\n let Component = Element.Component\n if (Component.$$typeof === Symbol.for('react.forward_ref')) {\n rest.ref = instance.ref\n }\n let renderChildren = children?.length\n ? children.map((item: any) => <ItemInstance key={item.id} id={item.id} />)\n : childIds.length\n ? childIds.map((cid) => <ItemInstance key={cid} id={cid} />)\n : null\n let style = rest.style || {}\n if (__hidden) style.display = 'none'\n\n return (\n <Component\n key={id}\n data-wv-type={type}\n data-wv-id={id}\n className={clsx(\n platformType !== 'shopify-hydrogen' &&\n generateItemClassName(instance, stitchesInstance),\n rest?.data?.className\n )}\n style={style}\n {...rest}\n children={renderChildren}\n />\n )\n } else {\n console.log(`❌ Unknown element: ${type}`)\n return null\n }\n})\n\nexport let useWeaverse = () => {\n let weaverse = useContext(WeaverseContext)\n return weaverse\n}\n\nlet ItemInstance = memo(({ id }: { id: string | number }) => {\n let weaverse = useWeaverse()\n let { itemInstances } = weaverse\n let instance = itemInstances.get(id)\n if (!instance) {\n console.warn(`Item instance ${id} not found`)\n return <div style={{ display: 'none' }}>Item instance {id} not found</div>\n }\n return <ItemComponent key={id} instance={instance} />\n})\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f);else for(t in e)e[t]&&(n&&(n+=\" \"),n+=t);return n}export function clsx(){for(var e,t,f=0,n=\"\";f<arguments.length;)(e=arguments[f++])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import type Stitches from '@stitches/react/types/stitches'\nimport type { ElementCSS, WeaverseItemStore } from '@weaverse/core'\nimport clsx from 'clsx'\nimport type { LinkHTMLAttributes } from 'react'\n\n// Make the css data formatted to correct order (desktop, tablet, mobile)\nfunction formatCSS(css: ElementCSS) {\n return {\n '@desktop': css['@desktop'],\n '@mobile': css['@mobile'],\n }\n}\n\nlet permanentClasses: Record<string, string> = {}\nexport function generateItemClassName(\n instance: WeaverseItemStore,\n stitchesInstance: Stitches\n) {\n let { css, type, className: cls = '' } = instance.data\n let className = ''\n let permanentClass = ''\n let perCss = instance.Element?.permanentCss\n if (perCss) {\n if (type in permanentClasses) {\n permanentClass = permanentClasses[type]\n } else {\n // @ts-ignore\n let { className: perCls } = stitchesInstance.css(perCss)()\n Object.assign(permanentClasses, { [type]: perCls })\n permanentClass = perCls\n }\n }\n className = permanentClass\n if (css) {\n // let stitches create the style from css object and\n // then return the classname, so we can use it in the render\n let formattedCss = formatCSS(css)\n let newStitchesClass = stitchesInstance.css(formattedCss)().className || ''\n let { stitchesClass } = instance\n let otherClass = (instance.ref.current?.className || '')\n .replace(stitchesClass, '')\n .replace(cls, '')\n .replace(permanentClass, '')\n .trim()\n className = clsx(permanentClass, cls, newStitchesClass, otherClass)\n instance.stitchesClass = newStitchesClass\n }\n return className\n}\n"],"mappings":"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","names":["import_react","React","data"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/context.ts","../src/renderer.tsx","../../../node_modules/clsx/dist/clsx.m.js","../src/utils/css.ts"],"sourcesContent":["export * from '@weaverse/core'\nexport * from './context'\nexport * from './renderer'\nexport * from './types'\n","import { type Weaverse } from '@weaverse/core'\nimport { createContext } from 'react'\n\nexport let WeaverseContext = createContext<Weaverse>({} as Weaverse)\nexport let WeaverseContextProvider = WeaverseContext.Provider\nexport let WeaverseContextConsumer = WeaverseContext.Consumer\n","/* eslint-disable react/no-children-prop */\nimport type {\n ElementData,\n Weaverse,\n WeaverseProjectDataType,\n} from '@weaverse/core'\nimport { isBrowser } from '@weaverse/core'\nimport React, { memo, useContext, useEffect, useRef, useState } from 'react'\nimport { WeaverseContext, WeaverseContextProvider } from './context'\nimport type { ItemComponentProps, WeaverseRootPropsType } from './types'\nimport { generateItemClassName } from './utils/css'\nimport clsx from 'clsx'\n\nexport let WeaverseRoot = memo(({ context }: WeaverseRootPropsType) => {\n if (isBrowser) {\n console.log('💿 Weaverse root', context)\n }\n let [, setData] = useState<WeaverseProjectDataType | unknown>(context.data)\n let rootRef = useRef<HTMLElement>()\n let renderRoot = () => setData({})\n\n useEffect(() => {\n context.subscribe(renderRoot)\n context.contentRootElement = rootRef.current\n return () => {\n context.unsubscribe(renderRoot)\n }\n }, [])\n\n let eventHandlers = context?.studioBridge?.eventHandlers || {}\n let themeClass = context.stitchesInstance.theme.className\n\n if (context.projectId) {\n return (\n <div\n className={`weaverse-content-root ${themeClass}`}\n {...eventHandlers}\n ref={rootRef}\n data-weaverse-project-id={context.projectId}\n >\n <WeaverseContextProvider value={context}>\n <ItemInstance id={context.data.rootId || context.projectId} />\n </WeaverseContextProvider>\n </div>\n )\n }\n return null\n})\n\nconst ItemComponent = memo(({ instance }: ItemComponentProps) => {\n let context = useContext(WeaverseContext)\n let { stitchesInstance, elementInstances, platformType } = context\n let [data, setData] = useState<ElementData>(instance.data)\n let {\n id,\n type,\n childIds = [],\n children = [],\n parentId,\n createdAt,\n updatedAt,\n deletedAt,\n css,\n __hidden,\n ...rest\n } = data\n\n useEffect(() => {\n let render = (data: ElementData) => setData({ ...data })\n instance.subscribe(render)\n if (isBrowser && !instance.ref.current) {\n // Fallback `ref` if the element isn't created by `React.forwardRef`\n Object.assign(instance.ref, {\n current: document.querySelector(`[data-wv-id=\"${id}\"]`),\n })\n }\n return () => instance.unsubscribe(render)\n }, [])\n\n let Element = elementInstances.get(type)\n\n if (Element?.Component) {\n let Component = Element.Component\n if (Component.$$typeof === Symbol.for('react.forward_ref')) {\n rest.ref = instance.ref\n }\n let renderChildren = children?.length\n ? children.map((item: any) => <ItemInstance key={item.id} id={item.id} />)\n : childIds.length\n ? childIds.map((cid) => <ItemInstance key={cid} id={cid} />)\n : null\n let style = rest.style || {}\n if (__hidden) style.display = 'none'\n\n return (\n <Component\n key={id}\n data-wv-type={type}\n data-wv-id={id}\n className={clsx(\n platformType !== 'shopify-hydrogen' &&\n generateItemClassName(instance, stitchesInstance),\n rest?.data?.className\n )}\n style={style}\n {...rest}\n children={renderChildren}\n />\n )\n } else {\n console.log(`❌ Unknown element: ${type}`)\n return null\n }\n})\n\nexport function useWeaverse<T = Weaverse>() {\n let weaverse = useContext(WeaverseContext)\n return weaverse as T\n}\n\nlet ItemInstance = memo(({ id }: { id: string | number }) => {\n let weaverse = useWeaverse()\n let { itemInstances } = weaverse\n let instance = itemInstances.get(id)\n if (!instance) {\n console.warn(`Item instance ${id} not found`)\n return <div style={{ display: 'none' }}>Item instance {id} not found</div>\n }\n return <ItemComponent key={id} instance={instance} />\n})\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f);else for(t in e)e[t]&&(n&&(n+=\" \"),n+=t);return n}export function clsx(){for(var e,t,f=0,n=\"\";f<arguments.length;)(e=arguments[f++])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import type Stitches from '@stitches/react/types/stitches'\nimport type { ElementCSS, WeaverseItemStore } from '@weaverse/core'\nimport clsx from 'clsx'\nimport type { LinkHTMLAttributes } from 'react'\n\n// Make the css data formatted to correct order (desktop, tablet, mobile)\nfunction formatCSS(css: ElementCSS) {\n return {\n '@desktop': css['@desktop'],\n '@mobile': css['@mobile'],\n }\n}\n\nlet permanentClasses: Record<string, string> = {}\nexport function generateItemClassName(\n instance: WeaverseItemStore,\n stitchesInstance: Stitches\n) {\n let { css, type, className: cls = '' } = instance.data\n let className = ''\n let permanentClass = ''\n let perCss = instance.Element?.permanentCss\n if (perCss) {\n if (type in permanentClasses) {\n permanentClass = permanentClasses[type]\n } else {\n // @ts-ignore\n let { className: perCls } = stitchesInstance.css(perCss)()\n Object.assign(permanentClasses, { [type]: perCls })\n permanentClass = perCls\n }\n }\n className = permanentClass\n if (css) {\n // let stitches create the style from css object and\n // then return the classname, so we can use it in the render\n let formattedCss = formatCSS(css)\n let newStitchesClass = stitchesInstance.css(formattedCss)().className || ''\n let { stitchesClass } = instance\n let otherClass = (instance.ref.current?.className || '')\n .replace(stitchesClass, '')\n .replace(cls, '')\n .replace(permanentClass, '')\n .trim()\n className = clsx(permanentClass, cls, newStitchesClass, otherClass)\n instance.stitchesClass = newStitchesClass\n }\n return className\n}\n"],"mappings":"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","names":["import_react","React","data"]}
package/dist/index.mjs CHANGED
@@ -11,7 +11,7 @@ var WeaverseContextConsumer = WeaverseContext.Consumer;
11
11
  import { isBrowser } from "@weaverse/core";
12
12
  import React, { memo, useContext, useEffect, useRef, useState } from "react";
13
13
 
14
- // ../../node_modules/clsx/dist/clsx.m.js
14
+ // ../../node_modules/clsx/dist/clsx.mjs
15
15
  function r(e) {
16
16
  var t, f, n = "";
17
17
  if ("string" == typeof e || "number" == typeof e)
@@ -30,7 +30,7 @@ function clsx() {
30
30
  (e = arguments[f++]) && (t = r(e)) && (n && (n += " "), n += t);
31
31
  return n;
32
32
  }
33
- var clsx_m_default = clsx;
33
+ var clsx_default = clsx;
34
34
 
35
35
  // src/utils/css.ts
36
36
  function formatCSS(css) {
@@ -60,7 +60,7 @@ function generateItemClassName(instance, stitchesInstance) {
60
60
  let newStitchesClass = stitchesInstance.css(formattedCss)().className || "";
61
61
  let { stitchesClass } = instance;
62
62
  let otherClass = (instance.ref.current?.className || "").replace(stitchesClass, "").replace(cls, "").replace(permanentClass, "").trim();
63
- className = clsx_m_default(permanentClass, cls, newStitchesClass, otherClass);
63
+ className = clsx_default(permanentClass, cls, newStitchesClass, otherClass);
64
64
  instance.stitchesClass = newStitchesClass;
65
65
  }
66
66
  return className;
@@ -140,7 +140,7 @@ var ItemComponent = memo(({ instance }) => {
140
140
  key: id,
141
141
  "data-wv-type": type,
142
142
  "data-wv-id": id,
143
- className: clsx_m_default(
143
+ className: clsx_default(
144
144
  platformType !== "shopify-hydrogen" && generateItemClassName(instance, stitchesInstance),
145
145
  rest?.data?.className
146
146
  ),
@@ -154,10 +154,10 @@ var ItemComponent = memo(({ instance }) => {
154
154
  return null;
155
155
  }
156
156
  });
157
- var useWeaverse = () => {
157
+ function useWeaverse() {
158
158
  let weaverse = useContext(WeaverseContext);
159
159
  return weaverse;
160
- };
160
+ }
161
161
  var ItemInstance = memo(({ id }) => {
162
162
  let weaverse = useWeaverse();
163
163
  let { itemInstances } = weaverse;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/context.ts","../src/renderer.tsx","../../../node_modules/clsx/dist/clsx.m.js","../src/utils/css.ts"],"sourcesContent":["export * from '@weaverse/core'\nexport * from './context'\nexport * from './renderer'\nexport * from './types'\n","import { type Weaverse } from '@weaverse/core'\nimport { createContext } from 'react'\n\nexport let WeaverseContext = createContext<Weaverse>({} as Weaverse)\nexport let WeaverseContextProvider = WeaverseContext.Provider\nexport let WeaverseContextConsumer = WeaverseContext.Consumer\n","/* eslint-disable react/no-children-prop */\nimport type { ElementData, WeaverseProjectDataType } from '@weaverse/core'\nimport { isBrowser } from '@weaverse/core'\nimport React, { memo, useContext, useEffect, useRef, useState } from 'react'\nimport { WeaverseContext, WeaverseContextProvider } from './context'\nimport type { ItemComponentProps, WeaverseRootPropsType } from './types'\nimport { generateItemClassName } from './utils/css'\nimport clsx from 'clsx'\n\nexport let WeaverseRoot = memo(({ context }: WeaverseRootPropsType) => {\n if (isBrowser) {\n console.log('💿 Weaverse root', context)\n }\n let [, setData] = useState<WeaverseProjectDataType | unknown>(context.data)\n let rootRef = useRef<HTMLElement>()\n let renderRoot = () => setData({})\n\n useEffect(() => {\n context.subscribe(renderRoot)\n context.contentRootElement = rootRef.current\n return () => {\n context.unsubscribe(renderRoot)\n }\n }, [])\n\n let eventHandlers = context?.studioBridge?.eventHandlers || {}\n let themeClass = context.stitchesInstance.theme.className\n\n if (context.projectId) {\n return (\n <div\n className={`weaverse-content-root ${themeClass}`}\n {...eventHandlers}\n ref={rootRef}\n data-weaverse-project-id={context.projectId}\n >\n <WeaverseContextProvider value={context}>\n <ItemInstance id={context.data.rootId || context.projectId} />\n </WeaverseContextProvider>\n </div>\n )\n }\n return null\n})\n\nconst ItemComponent = memo(({ instance }: ItemComponentProps) => {\n let context = useContext(WeaverseContext)\n let { stitchesInstance, elementInstances, platformType } = context\n let [data, setData] = useState<ElementData>(instance.data)\n let {\n id,\n type,\n childIds = [],\n children = [],\n parentId,\n createdAt,\n updatedAt,\n deletedAt,\n css,\n __hidden,\n ...rest\n } = data\n\n useEffect(() => {\n let render = (data: ElementData) => setData({ ...data })\n instance.subscribe(render)\n if (isBrowser && !instance.ref.current) {\n // Fallback `ref` if the element isn't created by `React.forwardRef`\n Object.assign(instance.ref, {\n current: document.querySelector(`[data-wv-id=\"${id}\"]`),\n })\n }\n return () => instance.unsubscribe(render)\n }, [])\n\n let Element = elementInstances.get(type)\n\n if (Element?.Component) {\n let Component = Element.Component\n if (Component.$$typeof === Symbol.for('react.forward_ref')) {\n rest.ref = instance.ref\n }\n let renderChildren = children?.length\n ? children.map((item: any) => <ItemInstance key={item.id} id={item.id} />)\n : childIds.length\n ? childIds.map((cid) => <ItemInstance key={cid} id={cid} />)\n : null\n let style = rest.style || {}\n if (__hidden) style.display = 'none'\n\n return (\n <Component\n key={id}\n data-wv-type={type}\n data-wv-id={id}\n className={clsx(\n platformType !== 'shopify-hydrogen' &&\n generateItemClassName(instance, stitchesInstance),\n rest?.data?.className\n )}\n style={style}\n {...rest}\n children={renderChildren}\n />\n )\n } else {\n console.log(`❌ Unknown element: ${type}`)\n return null\n }\n})\n\nexport let useWeaverse = () => {\n let weaverse = useContext(WeaverseContext)\n return weaverse\n}\n\nlet ItemInstance = memo(({ id }: { id: string | number }) => {\n let weaverse = useWeaverse()\n let { itemInstances } = weaverse\n let instance = itemInstances.get(id)\n if (!instance) {\n console.warn(`Item instance ${id} not found`)\n return <div style={{ display: 'none' }}>Item instance {id} not found</div>\n }\n return <ItemComponent key={id} instance={instance} />\n})\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f);else for(t in e)e[t]&&(n&&(n+=\" \"),n+=t);return n}export function clsx(){for(var e,t,f=0,n=\"\";f<arguments.length;)(e=arguments[f++])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import type Stitches from '@stitches/react/types/stitches'\nimport type { ElementCSS, WeaverseItemStore } from '@weaverse/core'\nimport clsx from 'clsx'\nimport type { LinkHTMLAttributes } from 'react'\n\n// Make the css data formatted to correct order (desktop, tablet, mobile)\nfunction formatCSS(css: ElementCSS) {\n return {\n '@desktop': css['@desktop'],\n '@mobile': css['@mobile'],\n }\n}\n\nlet permanentClasses: Record<string, string> = {}\nexport function generateItemClassName(\n instance: WeaverseItemStore,\n stitchesInstance: Stitches\n) {\n let { css, type, className: cls = '' } = instance.data\n let className = ''\n let permanentClass = ''\n let perCss = instance.Element?.permanentCss\n if (perCss) {\n if (type in permanentClasses) {\n permanentClass = permanentClasses[type]\n } else {\n // @ts-ignore\n let { className: perCls } = stitchesInstance.css(perCss)()\n Object.assign(permanentClasses, { [type]: perCls })\n permanentClass = perCls\n }\n }\n className = permanentClass\n if (css) {\n // let stitches create the style from css object and\n // then return the classname, so we can use it in the render\n let formattedCss = formatCSS(css)\n let newStitchesClass = stitchesInstance.css(formattedCss)().className || ''\n let { stitchesClass } = instance\n let otherClass = (instance.ref.current?.className || '')\n .replace(stitchesClass, '')\n .replace(cls, '')\n .replace(permanentClass, '')\n .trim()\n className = clsx(permanentClass, cls, newStitchesClass, otherClass)\n instance.stitchesClass = newStitchesClass\n }\n return className\n}\n"],"mappings":";AAAA,cAAc;;;ACCd,SAAS,qBAAqB;AAEvB,IAAI,kBAAkB,cAAwB,CAAC,CAAa;AAC5D,IAAI,0BAA0B,gBAAgB;AAC9C,IAAI,0BAA0B,gBAAgB;;;ACHrD,SAAS,iBAAiB;AAC1B,OAAO,SAAS,MAAM,YAAY,WAAW,QAAQ,gBAAgB;;;ACHrE,SAAS,EAAE,GAAE;AAAC,MAAI,GAAE,GAAE,IAAE;AAAG,MAAG,YAAU,OAAO,KAAG,YAAU,OAAO;AAAE,SAAG;AAAA,WAAU,YAAU,OAAO;AAAE,QAAG,MAAM,QAAQ,CAAC;AAAE,WAAI,IAAE,GAAE,IAAE,EAAE,QAAO;AAAI,UAAE,CAAC,MAAI,IAAE,EAAE,EAAE,CAAC,CAAC,OAAK,MAAI,KAAG,MAAK,KAAG;AAAA;AAAQ,WAAI,KAAK;AAAE,UAAE,CAAC,MAAI,MAAI,KAAG,MAAK,KAAG;AAAG,SAAO;AAAC;AAAQ,SAAS,OAAM;AAAC,WAAQ,GAAE,GAAE,IAAE,GAAE,IAAE,IAAG,IAAE,UAAU;AAAQ,KAAC,IAAE,UAAU,GAAG,OAAK,IAAE,EAAE,CAAC,OAAK,MAAI,KAAG,MAAK,KAAG;AAAG,SAAO;AAAC;AAAC,IAAO,iBAAQ;;;ACMjX,SAAS,UAAU,KAAiB;AAClC,SAAO;AAAA,IACL,YAAY,IAAI,UAAU;AAAA,IAC1B,WAAW,IAAI,SAAS;AAAA,EAC1B;AACF;AAEA,IAAI,mBAA2C,CAAC;AACzC,SAAS,sBACd,UACA,kBACA;AACA,MAAI,EAAE,KAAK,MAAM,WAAW,MAAM,GAAG,IAAI,SAAS;AAClD,MAAI,YAAY;AAChB,MAAI,iBAAiB;AACrB,MAAI,SAAS,SAAS,SAAS;AAC/B,MAAI,QAAQ;AACV,QAAI,QAAQ,kBAAkB;AAC5B,uBAAiB,iBAAiB,IAAI;AAAA,IACxC,OAAO;AAEL,UAAI,EAAE,WAAW,OAAO,IAAI,iBAAiB,IAAI,MAAM,EAAE;AACzD,aAAO,OAAO,kBAAkB,EAAE,CAAC,IAAI,GAAG,OAAO,CAAC;AAClD,uBAAiB;AAAA,IACnB;AAAA,EACF;AACA,cAAY;AACZ,MAAI,KAAK;AAGP,QAAI,eAAe,UAAU,GAAG;AAChC,QAAI,mBAAmB,iBAAiB,IAAI,YAAY,EAAE,EAAE,aAAa;AACzE,QAAI,EAAE,cAAc,IAAI;AACxB,QAAI,cAAc,SAAS,IAAI,SAAS,aAAa,IAClD,QAAQ,eAAe,EAAE,EACzB,QAAQ,KAAK,EAAE,EACf,QAAQ,gBAAgB,EAAE,EAC1B,KAAK;AACR,gBAAY,eAAK,gBAAgB,KAAK,kBAAkB,UAAU;AAClE,aAAS,gBAAgB;AAAA,EAC3B;AACA,SAAO;AACT;;;AFvCO,IAAI,eAAe,KAAK,CAAC,EAAE,QAAQ,MAA6B;AACrE,MAAI,WAAW;AACb,YAAQ,IAAI,2BAAoB,OAAO;AAAA,EACzC;AACA,MAAI,CAAC,EAAE,OAAO,IAAI,SAA4C,QAAQ,IAAI;AAC1E,MAAI,UAAU,OAAoB;AAClC,MAAI,aAAa,MAAM,QAAQ,CAAC,CAAC;AAEjC,YAAU,MAAM;AACd,YAAQ,UAAU,UAAU;AAC5B,YAAQ,qBAAqB,QAAQ;AACrC,WAAO,MAAM;AACX,cAAQ,YAAY,UAAU;AAAA,IAChC;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,MAAI,gBAAgB,SAAS,cAAc,iBAAiB,CAAC;AAC7D,MAAI,aAAa,QAAQ,iBAAiB,MAAM;AAEhD,MAAI,QAAQ,WAAW;AACrB,WACE;AAAA,MAAC;AAAA;AAAA,QACC,WAAW,yBAAyB,UAAU;AAAA,QAC7C,GAAG;AAAA,QACJ,KAAK;AAAA,QACL,4BAA0B,QAAQ;AAAA;AAAA,MAElC,oCAAC,2BAAwB,OAAO,WAC9B,oCAAC,gBAAa,IAAI,QAAQ,KAAK,UAAU,QAAQ,WAAW,CAC9D;AAAA,IACF;AAAA,EAEJ;AACA,SAAO;AACT,CAAC;AAED,IAAM,gBAAgB,KAAK,CAAC,EAAE,SAAS,MAA0B;AAC/D,MAAI,UAAU,WAAW,eAAe;AACxC,MAAI,EAAE,kBAAkB,kBAAkB,aAAa,IAAI;AAC3D,MAAI,CAAC,MAAM,OAAO,IAAI,SAAsB,SAAS,IAAI;AACzD,MAAI;AAAA,IACF;AAAA,IACA;AAAA,IACA,WAAW,CAAC;AAAA,IACZ,WAAW,CAAC;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AAEJ,YAAU,MAAM;AACd,QAAI,SAAS,CAACA,UAAsB,QAAQ,EAAE,GAAGA,MAAK,CAAC;AACvD,aAAS,UAAU,MAAM;AACzB,QAAI,aAAa,CAAC,SAAS,IAAI,SAAS;AAEtC,aAAO,OAAO,SAAS,KAAK;AAAA,QAC1B,SAAS,SAAS,cAAc,gBAAgB,EAAE,IAAI;AAAA,MACxD,CAAC;AAAA,IACH;AACA,WAAO,MAAM,SAAS,YAAY,MAAM;AAAA,EAC1C,GAAG,CAAC,CAAC;AAEL,MAAI,UAAU,iBAAiB,IAAI,IAAI;AAEvC,MAAI,SAAS,WAAW;AACtB,QAAI,YAAY,QAAQ;AACxB,QAAI,UAAU,aAAa,OAAO,IAAI,mBAAmB,GAAG;AAC1D,WAAK,MAAM,SAAS;AAAA,IACtB;AACA,QAAI,iBAAiB,UAAU,SAC3B,SAAS,IAAI,CAAC,SAAc,oCAAC,gBAAa,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI,CAAE,IACvE,SAAS,SACT,SAAS,IAAI,CAAC,QAAQ,oCAAC,gBAAa,KAAK,KAAK,IAAI,KAAK,CAAE,IACzD;AACJ,QAAI,QAAQ,KAAK,SAAS,CAAC;AAC3B,QAAI;AAAU,YAAM,UAAU;AAE9B,WACE;AAAA,MAAC;AAAA;AAAA,QACC,KAAK;AAAA,QACL,gBAAc;AAAA,QACd,cAAY;AAAA,QACZ,WAAW;AAAA,UACT,iBAAiB,sBACf,sBAAsB,UAAU,gBAAgB;AAAA,UAClD,MAAM,MAAM;AAAA,QACd;AAAA,QACA;AAAA,QACC,GAAG;AAAA,QACJ,UAAU;AAAA;AAAA,IACZ;AAAA,EAEJ,OAAO;AACL,YAAQ,IAAI,2BAAsB,IAAI,EAAE;AACxC,WAAO;AAAA,EACT;AACF,CAAC;AAEM,IAAI,cAAc,MAAM;AAC7B,MAAI,WAAW,WAAW,eAAe;AACzC,SAAO;AACT;AAEA,IAAI,eAAe,KAAK,CAAC,EAAE,GAAG,MAA+B;AAC3D,MAAI,WAAW,YAAY;AAC3B,MAAI,EAAE,cAAc,IAAI;AACxB,MAAI,WAAW,cAAc,IAAI,EAAE;AACnC,MAAI,CAAC,UAAU;AACb,YAAQ,KAAK,iBAAiB,EAAE,YAAY;AAC5C,WAAO,oCAAC,SAAI,OAAO,EAAE,SAAS,OAAO,KAAG,kBAAe,IAAG,YAAU;AAAA,EACtE;AACA,SAAO,oCAAC,iBAAc,KAAK,IAAI,UAAoB;AACrD,CAAC;","names":["data"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/context.ts","../src/renderer.tsx","../../../node_modules/clsx/dist/clsx.m.js","../src/utils/css.ts"],"sourcesContent":["export * from '@weaverse/core'\nexport * from './context'\nexport * from './renderer'\nexport * from './types'\n","import { type Weaverse } from '@weaverse/core'\nimport { createContext } from 'react'\n\nexport let WeaverseContext = createContext<Weaverse>({} as Weaverse)\nexport let WeaverseContextProvider = WeaverseContext.Provider\nexport let WeaverseContextConsumer = WeaverseContext.Consumer\n","/* eslint-disable react/no-children-prop */\nimport type {\n ElementData,\n Weaverse,\n WeaverseProjectDataType,\n} from '@weaverse/core'\nimport { isBrowser } from '@weaverse/core'\nimport React, { memo, useContext, useEffect, useRef, useState } from 'react'\nimport { WeaverseContext, WeaverseContextProvider } from './context'\nimport type { ItemComponentProps, WeaverseRootPropsType } from './types'\nimport { generateItemClassName } from './utils/css'\nimport clsx from 'clsx'\n\nexport let WeaverseRoot = memo(({ context }: WeaverseRootPropsType) => {\n if (isBrowser) {\n console.log('💿 Weaverse root', context)\n }\n let [, setData] = useState<WeaverseProjectDataType | unknown>(context.data)\n let rootRef = useRef<HTMLElement>()\n let renderRoot = () => setData({})\n\n useEffect(() => {\n context.subscribe(renderRoot)\n context.contentRootElement = rootRef.current\n return () => {\n context.unsubscribe(renderRoot)\n }\n }, [])\n\n let eventHandlers = context?.studioBridge?.eventHandlers || {}\n let themeClass = context.stitchesInstance.theme.className\n\n if (context.projectId) {\n return (\n <div\n className={`weaverse-content-root ${themeClass}`}\n {...eventHandlers}\n ref={rootRef}\n data-weaverse-project-id={context.projectId}\n >\n <WeaverseContextProvider value={context}>\n <ItemInstance id={context.data.rootId || context.projectId} />\n </WeaverseContextProvider>\n </div>\n )\n }\n return null\n})\n\nconst ItemComponent = memo(({ instance }: ItemComponentProps) => {\n let context = useContext(WeaverseContext)\n let { stitchesInstance, elementInstances, platformType } = context\n let [data, setData] = useState<ElementData>(instance.data)\n let {\n id,\n type,\n childIds = [],\n children = [],\n parentId,\n createdAt,\n updatedAt,\n deletedAt,\n css,\n __hidden,\n ...rest\n } = data\n\n useEffect(() => {\n let render = (data: ElementData) => setData({ ...data })\n instance.subscribe(render)\n if (isBrowser && !instance.ref.current) {\n // Fallback `ref` if the element isn't created by `React.forwardRef`\n Object.assign(instance.ref, {\n current: document.querySelector(`[data-wv-id=\"${id}\"]`),\n })\n }\n return () => instance.unsubscribe(render)\n }, [])\n\n let Element = elementInstances.get(type)\n\n if (Element?.Component) {\n let Component = Element.Component\n if (Component.$$typeof === Symbol.for('react.forward_ref')) {\n rest.ref = instance.ref\n }\n let renderChildren = children?.length\n ? children.map((item: any) => <ItemInstance key={item.id} id={item.id} />)\n : childIds.length\n ? childIds.map((cid) => <ItemInstance key={cid} id={cid} />)\n : null\n let style = rest.style || {}\n if (__hidden) style.display = 'none'\n\n return (\n <Component\n key={id}\n data-wv-type={type}\n data-wv-id={id}\n className={clsx(\n platformType !== 'shopify-hydrogen' &&\n generateItemClassName(instance, stitchesInstance),\n rest?.data?.className\n )}\n style={style}\n {...rest}\n children={renderChildren}\n />\n )\n } else {\n console.log(`❌ Unknown element: ${type}`)\n return null\n }\n})\n\nexport function useWeaverse<T = Weaverse>() {\n let weaverse = useContext(WeaverseContext)\n return weaverse as T\n}\n\nlet ItemInstance = memo(({ id }: { id: string | number }) => {\n let weaverse = useWeaverse()\n let { itemInstances } = weaverse\n let instance = itemInstances.get(id)\n if (!instance) {\n console.warn(`Item instance ${id} not found`)\n return <div style={{ display: 'none' }}>Item instance {id} not found</div>\n }\n return <ItemComponent key={id} instance={instance} />\n})\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f);else for(t in e)e[t]&&(n&&(n+=\" \"),n+=t);return n}export function clsx(){for(var e,t,f=0,n=\"\";f<arguments.length;)(e=arguments[f++])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import type Stitches from '@stitches/react/types/stitches'\nimport type { ElementCSS, WeaverseItemStore } from '@weaverse/core'\nimport clsx from 'clsx'\nimport type { LinkHTMLAttributes } from 'react'\n\n// Make the css data formatted to correct order (desktop, tablet, mobile)\nfunction formatCSS(css: ElementCSS) {\n return {\n '@desktop': css['@desktop'],\n '@mobile': css['@mobile'],\n }\n}\n\nlet permanentClasses: Record<string, string> = {}\nexport function generateItemClassName(\n instance: WeaverseItemStore,\n stitchesInstance: Stitches\n) {\n let { css, type, className: cls = '' } = instance.data\n let className = ''\n let permanentClass = ''\n let perCss = instance.Element?.permanentCss\n if (perCss) {\n if (type in permanentClasses) {\n permanentClass = permanentClasses[type]\n } else {\n // @ts-ignore\n let { className: perCls } = stitchesInstance.css(perCss)()\n Object.assign(permanentClasses, { [type]: perCls })\n permanentClass = perCls\n }\n }\n className = permanentClass\n if (css) {\n // let stitches create the style from css object and\n // then return the classname, so we can use it in the render\n let formattedCss = formatCSS(css)\n let newStitchesClass = stitchesInstance.css(formattedCss)().className || ''\n let { stitchesClass } = instance\n let otherClass = (instance.ref.current?.className || '')\n .replace(stitchesClass, '')\n .replace(cls, '')\n .replace(permanentClass, '')\n .trim()\n className = clsx(permanentClass, cls, newStitchesClass, otherClass)\n instance.stitchesClass = newStitchesClass\n }\n return className\n}\n"],"mappings":"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","names":["data"]}
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.0.55",
2
+ "version": "1.0.57",
3
3
  "license": "MIT",
4
4
  "main": "dist/index.js",
5
5
  "typings": "dist/index.d.ts",
@@ -32,6 +32,6 @@
32
32
  "name": "@weaverse/react",
33
33
  "author": "Weaverse Team",
34
34
  "dependencies": {
35
- "@weaverse/core": "1.0.55"
35
+ "@weaverse/core": "1.0.57"
36
36
  }
37
37
  }