@weaverse/react 0.6.5 → 0.6.9

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,18 +1,19 @@
1
+ import * as react from 'react';
1
2
  import { WeaverseType, Weaverse } from '@weaverse/core';
2
3
  export * from '@weaverse/core';
3
- import React$1 from 'react';
4
4
 
5
- declare const createRootContext: (configs: WeaverseType) => Weaverse;
6
- declare let WeaverseContext: React$1.Context<Weaverse>;
7
- declare let WeaverseContextProvider: React$1.Provider<Weaverse>;
8
- declare let WeaverseContextConsumer: React$1.Consumer<Weaverse>;
9
- declare type WeaverseRootPropsType = {
10
- context: Weaverse;
11
- };
12
- declare const WeaverseRoot: ({ context }: WeaverseRootPropsType) => JSX.Element;
5
+ declare let createRootContext: (configs: WeaverseType) => Weaverse;
6
+ declare let WeaverseContext: react.Context<Weaverse>;
7
+ declare let WeaverseContextProvider: react.Provider<Weaverse>;
8
+ declare let WeaverseContextConsumer: react.Consumer<Weaverse>;
13
9
 
14
10
  interface WeaverseElementProps {
15
11
  children?: React.ReactNode;
16
12
  }
13
+ declare type WeaverseRootPropsType = {
14
+ context: Weaverse;
15
+ };
16
+
17
+ declare let WeaverseRoot: ({ context }: WeaverseRootPropsType) => JSX.Element;
17
18
 
18
19
  export { WeaverseContext, WeaverseContextConsumer, WeaverseContextProvider, WeaverseElementProps, WeaverseRoot, WeaverseRootPropsType, createRootContext };
package/dist/index.js CHANGED
@@ -60,6 +60,10 @@ __export(src_exports, {
60
60
  });
61
61
  module.exports = __toCommonJS(src_exports);
62
62
 
63
+ // src/context.ts
64
+ var import_core = require("@weaverse/core");
65
+ var import_react5 = require("react");
66
+
63
67
  // src/elements/base.tsx
64
68
  var import_react = __toESM(require("react"));
65
69
  var BaseElement = import_react.default.forwardRef((_a, ref) => {
@@ -82,7 +86,15 @@ var base_default = BaseElement;
82
86
  // src/elements/button.tsx
83
87
  var React2 = __toESM(require("react"));
84
88
  var Button = React2.forwardRef((props, ref) => {
85
- const _a = props, { buttonType, css } = _a, rest = __objRest(_a, ["buttonType", "css"]);
89
+ const _a = props, { buttonType, css, openInNewTab = false, target = "" } = _a, rest = __objRest(_a, ["buttonType", "css", "openInNewTab", "target"]);
90
+ if (target) {
91
+ return /* @__PURE__ */ React2.createElement("a", {
92
+ href: target,
93
+ target: openInNewTab ? "_blank" : "_self"
94
+ }, /* @__PURE__ */ React2.createElement("button", __spreadValues({
95
+ ref
96
+ }, rest), props.value));
97
+ }
86
98
  return /* @__PURE__ */ React2.createElement("button", __spreadValues({
87
99
  ref
88
100
  }, rest), props.value);
@@ -117,6 +129,12 @@ var schema2 = {
117
129
  },
118
130
  {
119
131
  type: "duplicate"
132
+ },
133
+ {
134
+ type: "link"
135
+ },
136
+ {
137
+ type: "color"
120
138
  }
121
139
  ],
122
140
  data: {
@@ -126,7 +144,9 @@ var schema2 = {
126
144
  fontSize: "13px",
127
145
  padding: "10px 15px"
128
146
  }
129
- }
147
+ },
148
+ target: "",
149
+ openInNewTab: false
130
150
  }
131
151
  };
132
152
  var button_default = Button;
@@ -164,11 +184,20 @@ var container_default = Container;
164
184
  // src/elements/layout.tsx
165
185
  var import_react3 = __toESM(require("react"));
166
186
  var Layout = (0, import_react3.forwardRef)((props, ref) => {
167
- return /* @__PURE__ */ import_react3.default.createElement("div", __spreadProps(__spreadValues({
168
- ref
169
- }, props), {
170
- children: props.children
171
- }));
187
+ const _a = props, { css, children, rows, gap, rowSize, columns, gridSize } = _a, rest = __objRest(_a, ["css", "children", "rows", "gap", "rowSize", "columns", "gridSize"]);
188
+ return /* @__PURE__ */ import_react3.default.createElement("section", __spreadValues({
189
+ ref,
190
+ style: {
191
+ "--grid-size": gridSize + "px",
192
+ "--rows": rows,
193
+ "--columns": columns,
194
+ "--gap": gap + "px",
195
+ "--row-size": rowSize + "px",
196
+ "--col-size": "calc((var(--grid-size) - calc(var(--columns) - 1) * var(--gap)) / var(--columns))"
197
+ }
198
+ }, rest), /* @__PURE__ */ import_react3.default.createElement("div", {
199
+ "data-layout-content": true
200
+ }, children));
172
201
  });
173
202
  var schema4 = {
174
203
  title: "Layout",
@@ -176,20 +205,32 @@ var schema4 = {
176
205
  data: {
177
206
  css: {
178
207
  "@desktop": {
179
- display: "grid !important",
180
- gridTemplateRows: "repeat($row-count, $row-size)",
181
- gridTemplateColumns: "repeat($column-count, 1fr)",
182
- gridGap: "$gap",
183
- minHeight: "104px",
184
- width: "$width",
185
- maxWidth: "$max-width",
186
- margin: "0 auto"
208
+ paddingTop: "16px",
209
+ paddingBottom: "16px",
210
+ paddingLeft: "var(--gap)",
211
+ paddingRight: "var(--gap)",
212
+ "> [data-layout-content]": {
213
+ margin: "0 auto",
214
+ display: "grid !important",
215
+ gridTemplateRows: "repeat(var(--rows), var(--row-size))",
216
+ gridTemplateColumns: "repeat(var(--columns), minmax(0, var(--col-size)))",
217
+ gap: "var(--gap)",
218
+ maxWidth: "var(--grid-size)"
219
+ }
187
220
  },
188
221
  "@mobile": {
189
- display: "flex !important",
190
- flexDirection: "column"
222
+ padding: "0",
223
+ "> [data-layout-content]": {
224
+ display: "flex !important",
225
+ flexDirection: "column"
226
+ }
191
227
  }
192
- }
228
+ },
229
+ gridSize: 1224,
230
+ rows: 12,
231
+ columns: 12,
232
+ gap: 16,
233
+ rowSize: 48
193
234
  },
194
235
  settings: []
195
236
  };
@@ -251,7 +292,9 @@ var schema6 = {
251
292
  data: {
252
293
  css: {
253
294
  "@desktop": {
254
- padding: "10px"
295
+ width: "100%",
296
+ height: "100%",
297
+ objectFit: "cover"
255
298
  }
256
299
  }
257
300
  }
@@ -287,19 +330,9 @@ var elements = {
287
330
  };
288
331
  var elements_default = elements;
289
332
 
290
- // src/utils/css.ts
291
- var shortCssObject = (css) => {
292
- return {
293
- "@desktop": css[`@desktop`],
294
- "@mobile": css[`@mobile`]
295
- };
296
- };
297
-
298
- // src/renderer.tsx
299
- var import_core = require("@weaverse/core");
300
- var import_react5 = __toESM(require("react"));
333
+ // src/context.ts
301
334
  var createRootContext = (configs) => {
302
- const rootContext = new import_core.Weaverse(configs);
335
+ let rootContext = new import_core.Weaverse(configs);
303
336
  Object.keys(elements_default).forEach((key) => {
304
337
  rootContext.registerElement(elements_default[key]);
305
338
  });
@@ -308,93 +341,107 @@ var createRootContext = (configs) => {
308
341
  var WeaverseContext = (0, import_react5.createContext)({});
309
342
  var WeaverseContextProvider = WeaverseContext.Provider;
310
343
  var WeaverseContextConsumer = WeaverseContext.Consumer;
344
+
345
+ // src/renderer.tsx
346
+ var import_core2 = require("@weaverse/core");
347
+ var import_react6 = __toESM(require("react"));
348
+
349
+ // src/utils/index.ts
350
+ var shortCssObject = (css) => {
351
+ return {
352
+ "@desktop": css[`@desktop`],
353
+ "@mobile": css[`@mobile`]
354
+ };
355
+ };
356
+ function generateItemClass(instance, stitchesInstance) {
357
+ var _a;
358
+ let { css, className: cls = "" } = instance.data;
359
+ let className = "";
360
+ if (css) {
361
+ let formattedCss = shortCssObject(css);
362
+ let { className: newClass = "" } = stitchesInstance.css(formattedCss)();
363
+ let { stitchesClass } = instance;
364
+ let otherClass = (((_a = instance.ref.current) == null ? void 0 : _a.className) || "").replace(stitchesClass, "").replace(cls, "").trim();
365
+ className = `${cls} ${newClass} ${otherClass}`.trim();
366
+ instance.stitchesClass = newClass;
367
+ }
368
+ return className;
369
+ }
370
+
371
+ // src/renderer.tsx
311
372
  var WeaverseRoot = ({ context }) => {
312
373
  var _a;
313
- let [, setData] = (0, import_react5.useState)(context.projectData);
314
- (0, import_react5.useEffect)(() => {
315
- let handleUpdate = () => {
316
- setData({});
317
- };
318
- context.subscribe(handleUpdate);
374
+ let [, setData] = (0, import_react6.useState)(context.projectData);
375
+ let rootRef = (0, import_react6.useRef)();
376
+ (0, import_react6.useEffect)(() => {
377
+ let update = () => setData({});
378
+ context.subscribe(update);
319
379
  if (context.projectData) {
320
- setTimeout(handleUpdate, 110);
380
+ setTimeout(update, 110);
321
381
  }
382
+ context.contentRootElement = rootRef.current;
322
383
  return () => {
323
- context.unsubscribe(handleUpdate);
384
+ context.unsubscribe(update);
324
385
  };
325
386
  }, []);
326
387
  let eventHandlers = ((_a = context == null ? void 0 : context.studioBridge) == null ? void 0 : _a.eventHandlers) || {};
327
388
  let themeClass = context.stitchesInstance.theme.className;
328
- return /* @__PURE__ */ import_react5.default.createElement("div", __spreadValues({
389
+ return /* @__PURE__ */ import_react6.default.createElement("div", __spreadProps(__spreadValues({
329
390
  className: `weaverse-content-root ${themeClass}`
330
- }, eventHandlers), /* @__PURE__ */ import_react5.default.createElement(WeaverseContextProvider, {
391
+ }, eventHandlers), {
392
+ ref: rootRef
393
+ }), /* @__PURE__ */ import_react6.default.createElement(WeaverseContextProvider, {
331
394
  value: context
332
- }, /* @__PURE__ */ import_react5.default.createElement(RenderItem, {
333
- itemId: context.projectData.rootId || 0
395
+ }, /* @__PURE__ */ import_react6.default.createElement(ItemInstance, {
396
+ id: context.projectData.rootId || 0
334
397
  })));
335
398
  };
336
- var Item = ({ itemInstance, elementInstances }) => {
337
- var _b;
338
- let [data, setData] = (0, import_react5.useState)(itemInstance.data);
339
- let _a = data, { id, type, childIds, css, className: cls = "" } = _a, rest = __objRest(_a, ["id", "type", "childIds", "css", "className"]);
340
- console.log("data", data);
341
- (0, import_react5.useEffect)(() => {
342
- let handleUpdate = (update) => {
343
- setData(__spreadValues({}, update));
344
- };
345
- itemInstance.subscribe(handleUpdate);
346
- if (import_core.isBrowser && !itemInstance.ref.current) {
347
- Object.assign(itemInstance.ref, {
399
+ var ItemComponent = ({ instance }) => {
400
+ let { stitchesInstance, elementInstances } = (0, import_react6.useContext)(WeaverseContext);
401
+ let [data, setData] = (0, import_react6.useState)(instance.data);
402
+ let _a = data, { id, type, childIds = [], css, className: cls = "" } = _a, rest = __objRest(_a, ["id", "type", "childIds", "css", "className"]);
403
+ (0, import_react6.useEffect)(() => {
404
+ let update = (data2) => setData(__spreadValues({}, data2));
405
+ instance.subscribe(update);
406
+ if (import_core2.isBrowser && !instance.ref.current) {
407
+ Object.assign(instance.ref, {
348
408
  current: document.querySelector(`[data-wv-id="${id}"]`)
349
409
  });
350
410
  }
351
411
  return () => {
352
- itemInstance.unsubscribe(handleUpdate);
412
+ instance.unsubscribe(update);
353
413
  };
354
414
  }, []);
355
- let context = (0, import_react5.useContext)(WeaverseContext);
356
- let className = "";
357
- if (css) {
358
- let formattedCss = shortCssObject(css);
359
- let { className: newClass = "" } = context.stitchesInstance.css(formattedCss)();
360
- let { stitchesClass } = itemInstance;
361
- let otherClass = (((_b = itemInstance.ref.current) == null ? void 0 : _b.className) || "").replace(stitchesClass, "").replace(cls, "").trim();
362
- className = `${cls} ${newClass} ${otherClass}`.trim();
363
- itemInstance.stitchesClass = newClass;
364
- }
365
- let element = elementInstances.get(type) || elementInstances.get("base");
366
- if (element == null ? void 0 : element.Component) {
367
- let Component = element.Component;
415
+ let Element = elementInstances.get(type || "base");
416
+ if (Element == null ? void 0 : Element.Component) {
417
+ let Component = Element.Component;
368
418
  if (Component.$$typeof === Symbol.for("react.forward_ref")) {
369
- rest.ref = itemInstance.ref;
419
+ rest.ref = instance.ref;
370
420
  }
371
- return /* @__PURE__ */ import_react5.default.createElement(Component, __spreadProps(__spreadValues({
421
+ return /* @__PURE__ */ import_react6.default.createElement(Component, __spreadValues({
372
422
  key: id,
373
423
  "data-wv-type": type,
374
- "data-wv-id": id
375
- }, rest), {
376
- className
377
- }), Array.isArray(childIds) && childIds.map((childId) => /* @__PURE__ */ import_react5.default.createElement(RenderItem, {
378
- key: childId,
379
- itemId: childId
424
+ "data-wv-id": id,
425
+ className: generateItemClass(instance, stitchesInstance)
426
+ }, rest), childIds.map((id2) => /* @__PURE__ */ import_react6.default.createElement(ItemInstance, {
427
+ key: id2,
428
+ id: id2
380
429
  })));
381
430
  }
382
431
  return null;
383
432
  };
384
- var RenderItem = ({
385
- itemId
386
- }) => {
387
- let context = (0, import_react5.useContext)(WeaverseContext);
388
- let { itemInstances, elementInstances } = context;
389
- let itemInstance = itemInstances.get(itemId);
390
- if (itemInstance) {
391
- return /* @__PURE__ */ import_react5.default.createElement(Item, {
392
- itemInstance,
393
- elementInstances
394
- });
433
+ var ItemInstance = ({ id }) => {
434
+ let context = (0, import_react6.useContext)(WeaverseContext);
435
+ let { itemInstances } = context;
436
+ let instance = itemInstances.get(id);
437
+ if (!instance) {
438
+ return /* @__PURE__ */ import_react6.default.createElement("div", {
439
+ style: { display: "none" }
440
+ }, "Item instance ", id, " not found");
395
441
  }
396
- console.warn(`Item instance ${itemId} not found`);
397
- return /* @__PURE__ */ import_react5.default.createElement(import_react5.default.Fragment, null);
442
+ return /* @__PURE__ */ import_react6.default.createElement(ItemComponent, {
443
+ instance
444
+ });
398
445
  };
399
446
 
400
447
  // src/index.ts
package/dist/index.mjs CHANGED
@@ -30,6 +30,10 @@ var __objRest = (source, exclude) => {
30
30
  return target;
31
31
  };
32
32
 
33
+ // src/context.ts
34
+ import { Weaverse } from "@weaverse/core";
35
+ import { createContext } from "react";
36
+
33
37
  // src/elements/base.tsx
34
38
  import React from "react";
35
39
  var BaseElement = React.forwardRef((_a, ref) => {
@@ -52,7 +56,15 @@ var base_default = BaseElement;
52
56
  // src/elements/button.tsx
53
57
  import * as React2 from "react";
54
58
  var Button = React2.forwardRef((props, ref) => {
55
- const _a = props, { buttonType, css } = _a, rest = __objRest(_a, ["buttonType", "css"]);
59
+ const _a = props, { buttonType, css, openInNewTab = false, target = "" } = _a, rest = __objRest(_a, ["buttonType", "css", "openInNewTab", "target"]);
60
+ if (target) {
61
+ return /* @__PURE__ */ React2.createElement("a", {
62
+ href: target,
63
+ target: openInNewTab ? "_blank" : "_self"
64
+ }, /* @__PURE__ */ React2.createElement("button", __spreadValues({
65
+ ref
66
+ }, rest), props.value));
67
+ }
56
68
  return /* @__PURE__ */ React2.createElement("button", __spreadValues({
57
69
  ref
58
70
  }, rest), props.value);
@@ -87,6 +99,12 @@ var schema2 = {
87
99
  },
88
100
  {
89
101
  type: "duplicate"
102
+ },
103
+ {
104
+ type: "link"
105
+ },
106
+ {
107
+ type: "color"
90
108
  }
91
109
  ],
92
110
  data: {
@@ -96,7 +114,9 @@ var schema2 = {
96
114
  fontSize: "13px",
97
115
  padding: "10px 15px"
98
116
  }
99
- }
117
+ },
118
+ target: "",
119
+ openInNewTab: false
100
120
  }
101
121
  };
102
122
  var button_default = Button;
@@ -134,11 +154,20 @@ var container_default = Container;
134
154
  // src/elements/layout.tsx
135
155
  import React4, { forwardRef as forwardRef3 } from "react";
136
156
  var Layout = forwardRef3((props, ref) => {
137
- return /* @__PURE__ */ React4.createElement("div", __spreadProps(__spreadValues({
138
- ref
139
- }, props), {
140
- children: props.children
141
- }));
157
+ const _a = props, { css, children, rows, gap, rowSize, columns, gridSize } = _a, rest = __objRest(_a, ["css", "children", "rows", "gap", "rowSize", "columns", "gridSize"]);
158
+ return /* @__PURE__ */ React4.createElement("section", __spreadValues({
159
+ ref,
160
+ style: {
161
+ "--grid-size": gridSize + "px",
162
+ "--rows": rows,
163
+ "--columns": columns,
164
+ "--gap": gap + "px",
165
+ "--row-size": rowSize + "px",
166
+ "--col-size": "calc((var(--grid-size) - calc(var(--columns) - 1) * var(--gap)) / var(--columns))"
167
+ }
168
+ }, rest), /* @__PURE__ */ React4.createElement("div", {
169
+ "data-layout-content": true
170
+ }, children));
142
171
  });
143
172
  var schema4 = {
144
173
  title: "Layout",
@@ -146,20 +175,32 @@ var schema4 = {
146
175
  data: {
147
176
  css: {
148
177
  "@desktop": {
149
- display: "grid !important",
150
- gridTemplateRows: "repeat($row-count, $row-size)",
151
- gridTemplateColumns: "repeat($column-count, 1fr)",
152
- gridGap: "$gap",
153
- minHeight: "104px",
154
- width: "$width",
155
- maxWidth: "$max-width",
156
- margin: "0 auto"
178
+ paddingTop: "16px",
179
+ paddingBottom: "16px",
180
+ paddingLeft: "var(--gap)",
181
+ paddingRight: "var(--gap)",
182
+ "> [data-layout-content]": {
183
+ margin: "0 auto",
184
+ display: "grid !important",
185
+ gridTemplateRows: "repeat(var(--rows), var(--row-size))",
186
+ gridTemplateColumns: "repeat(var(--columns), minmax(0, var(--col-size)))",
187
+ gap: "var(--gap)",
188
+ maxWidth: "var(--grid-size)"
189
+ }
157
190
  },
158
191
  "@mobile": {
159
- display: "flex !important",
160
- flexDirection: "column"
192
+ padding: "0",
193
+ "> [data-layout-content]": {
194
+ display: "flex !important",
195
+ flexDirection: "column"
196
+ }
161
197
  }
162
- }
198
+ },
199
+ gridSize: 1224,
200
+ rows: 12,
201
+ columns: 12,
202
+ gap: 16,
203
+ rowSize: 48
163
204
  },
164
205
  settings: []
165
206
  };
@@ -221,7 +262,9 @@ var schema6 = {
221
262
  data: {
222
263
  css: {
223
264
  "@desktop": {
224
- padding: "10px"
265
+ width: "100%",
266
+ height: "100%",
267
+ objectFit: "cover"
225
268
  }
226
269
  }
227
270
  }
@@ -257,19 +300,9 @@ var elements = {
257
300
  };
258
301
  var elements_default = elements;
259
302
 
260
- // src/utils/css.ts
261
- var shortCssObject = (css) => {
262
- return {
263
- "@desktop": css[`@desktop`],
264
- "@mobile": css[`@mobile`]
265
- };
266
- };
267
-
268
- // src/renderer.tsx
269
- import { isBrowser, Weaverse } from "@weaverse/core";
270
- import React7, { createContext, useContext, useEffect, useState } from "react";
303
+ // src/context.ts
271
304
  var createRootContext = (configs) => {
272
- const rootContext = new Weaverse(configs);
305
+ let rootContext = new Weaverse(configs);
273
306
  Object.keys(elements_default).forEach((key) => {
274
307
  rootContext.registerElement(elements_default[key]);
275
308
  });
@@ -278,93 +311,107 @@ var createRootContext = (configs) => {
278
311
  var WeaverseContext = createContext({});
279
312
  var WeaverseContextProvider = WeaverseContext.Provider;
280
313
  var WeaverseContextConsumer = WeaverseContext.Consumer;
314
+
315
+ // src/renderer.tsx
316
+ import { isBrowser } from "@weaverse/core";
317
+ import React7, { useContext, useEffect, useRef, useState } from "react";
318
+
319
+ // src/utils/index.ts
320
+ var shortCssObject = (css) => {
321
+ return {
322
+ "@desktop": css[`@desktop`],
323
+ "@mobile": css[`@mobile`]
324
+ };
325
+ };
326
+ function generateItemClass(instance, stitchesInstance) {
327
+ var _a;
328
+ let { css, className: cls = "" } = instance.data;
329
+ let className = "";
330
+ if (css) {
331
+ let formattedCss = shortCssObject(css);
332
+ let { className: newClass = "" } = stitchesInstance.css(formattedCss)();
333
+ let { stitchesClass } = instance;
334
+ let otherClass = (((_a = instance.ref.current) == null ? void 0 : _a.className) || "").replace(stitchesClass, "").replace(cls, "").trim();
335
+ className = `${cls} ${newClass} ${otherClass}`.trim();
336
+ instance.stitchesClass = newClass;
337
+ }
338
+ return className;
339
+ }
340
+
341
+ // src/renderer.tsx
281
342
  var WeaverseRoot = ({ context }) => {
282
343
  var _a;
283
344
  let [, setData] = useState(context.projectData);
345
+ let rootRef = useRef();
284
346
  useEffect(() => {
285
- let handleUpdate = () => {
286
- setData({});
287
- };
288
- context.subscribe(handleUpdate);
347
+ let update = () => setData({});
348
+ context.subscribe(update);
289
349
  if (context.projectData) {
290
- setTimeout(handleUpdate, 110);
350
+ setTimeout(update, 110);
291
351
  }
352
+ context.contentRootElement = rootRef.current;
292
353
  return () => {
293
- context.unsubscribe(handleUpdate);
354
+ context.unsubscribe(update);
294
355
  };
295
356
  }, []);
296
357
  let eventHandlers = ((_a = context == null ? void 0 : context.studioBridge) == null ? void 0 : _a.eventHandlers) || {};
297
358
  let themeClass = context.stitchesInstance.theme.className;
298
- return /* @__PURE__ */ React7.createElement("div", __spreadValues({
359
+ return /* @__PURE__ */ React7.createElement("div", __spreadProps(__spreadValues({
299
360
  className: `weaverse-content-root ${themeClass}`
300
- }, eventHandlers), /* @__PURE__ */ React7.createElement(WeaverseContextProvider, {
361
+ }, eventHandlers), {
362
+ ref: rootRef
363
+ }), /* @__PURE__ */ React7.createElement(WeaverseContextProvider, {
301
364
  value: context
302
- }, /* @__PURE__ */ React7.createElement(RenderItem, {
303
- itemId: context.projectData.rootId || 0
365
+ }, /* @__PURE__ */ React7.createElement(ItemInstance, {
366
+ id: context.projectData.rootId || 0
304
367
  })));
305
368
  };
306
- var Item = ({ itemInstance, elementInstances }) => {
307
- var _b;
308
- let [data, setData] = useState(itemInstance.data);
309
- let _a = data, { id, type, childIds, css, className: cls = "" } = _a, rest = __objRest(_a, ["id", "type", "childIds", "css", "className"]);
310
- console.log("data", data);
369
+ var ItemComponent = ({ instance }) => {
370
+ let { stitchesInstance, elementInstances } = useContext(WeaverseContext);
371
+ let [data, setData] = useState(instance.data);
372
+ let _a = data, { id, type, childIds = [], css, className: cls = "" } = _a, rest = __objRest(_a, ["id", "type", "childIds", "css", "className"]);
311
373
  useEffect(() => {
312
- let handleUpdate = (update) => {
313
- setData(__spreadValues({}, update));
314
- };
315
- itemInstance.subscribe(handleUpdate);
316
- if (isBrowser && !itemInstance.ref.current) {
317
- Object.assign(itemInstance.ref, {
374
+ let update = (data2) => setData(__spreadValues({}, data2));
375
+ instance.subscribe(update);
376
+ if (isBrowser && !instance.ref.current) {
377
+ Object.assign(instance.ref, {
318
378
  current: document.querySelector(`[data-wv-id="${id}"]`)
319
379
  });
320
380
  }
321
381
  return () => {
322
- itemInstance.unsubscribe(handleUpdate);
382
+ instance.unsubscribe(update);
323
383
  };
324
384
  }, []);
325
- let context = useContext(WeaverseContext);
326
- let className = "";
327
- if (css) {
328
- let formattedCss = shortCssObject(css);
329
- let { className: newClass = "" } = context.stitchesInstance.css(formattedCss)();
330
- let { stitchesClass } = itemInstance;
331
- let otherClass = (((_b = itemInstance.ref.current) == null ? void 0 : _b.className) || "").replace(stitchesClass, "").replace(cls, "").trim();
332
- className = `${cls} ${newClass} ${otherClass}`.trim();
333
- itemInstance.stitchesClass = newClass;
334
- }
335
- let element = elementInstances.get(type) || elementInstances.get("base");
336
- if (element == null ? void 0 : element.Component) {
337
- let Component = element.Component;
385
+ let Element = elementInstances.get(type || "base");
386
+ if (Element == null ? void 0 : Element.Component) {
387
+ let Component = Element.Component;
338
388
  if (Component.$$typeof === Symbol.for("react.forward_ref")) {
339
- rest.ref = itemInstance.ref;
389
+ rest.ref = instance.ref;
340
390
  }
341
- return /* @__PURE__ */ React7.createElement(Component, __spreadProps(__spreadValues({
391
+ return /* @__PURE__ */ React7.createElement(Component, __spreadValues({
342
392
  key: id,
343
393
  "data-wv-type": type,
344
- "data-wv-id": id
345
- }, rest), {
346
- className
347
- }), Array.isArray(childIds) && childIds.map((childId) => /* @__PURE__ */ React7.createElement(RenderItem, {
348
- key: childId,
349
- itemId: childId
394
+ "data-wv-id": id,
395
+ className: generateItemClass(instance, stitchesInstance)
396
+ }, rest), childIds.map((id2) => /* @__PURE__ */ React7.createElement(ItemInstance, {
397
+ key: id2,
398
+ id: id2
350
399
  })));
351
400
  }
352
401
  return null;
353
402
  };
354
- var RenderItem = ({
355
- itemId
356
- }) => {
403
+ var ItemInstance = ({ id }) => {
357
404
  let context = useContext(WeaverseContext);
358
- let { itemInstances, elementInstances } = context;
359
- let itemInstance = itemInstances.get(itemId);
360
- if (itemInstance) {
361
- return /* @__PURE__ */ React7.createElement(Item, {
362
- itemInstance,
363
- elementInstances
364
- });
405
+ let { itemInstances } = context;
406
+ let instance = itemInstances.get(id);
407
+ if (!instance) {
408
+ return /* @__PURE__ */ React7.createElement("div", {
409
+ style: { display: "none" }
410
+ }, "Item instance ", id, " not found");
365
411
  }
366
- console.warn(`Item instance ${itemId} not found`);
367
- return /* @__PURE__ */ React7.createElement(React7.Fragment, null);
412
+ return /* @__PURE__ */ React7.createElement(ItemComponent, {
413
+ instance
414
+ });
368
415
  };
369
416
 
370
417
  // src/index.ts
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.6.5",
2
+ "version": "0.6.9",
3
3
  "license": "MIT",
4
4
  "main": "dist/index.js",
5
5
  "typings": "dist/index.d.ts",
@@ -31,6 +31,6 @@
31
31
  "name": "@weaverse/react",
32
32
  "author": "Weaverse Team",
33
33
  "dependencies": {
34
- "@weaverse/core": "0.6.5"
34
+ "@weaverse/core": "0.6.9"
35
35
  }
36
36
  }