@weaverse/react 0.6.8 → 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) => {
@@ -201,7 +205,6 @@ var schema4 = {
201
205
  data: {
202
206
  css: {
203
207
  "@desktop": {
204
- overflow: "hidden",
205
208
  paddingTop: "16px",
206
209
  paddingBottom: "16px",
207
210
  paddingLeft: "var(--gap)",
@@ -289,7 +292,9 @@ var schema6 = {
289
292
  data: {
290
293
  css: {
291
294
  "@desktop": {
292
- padding: "10px"
295
+ width: "100%",
296
+ height: "100%",
297
+ objectFit: "cover"
293
298
  }
294
299
  }
295
300
  }
@@ -325,19 +330,9 @@ var elements = {
325
330
  };
326
331
  var elements_default = elements;
327
332
 
328
- // src/utils/css.ts
329
- var shortCssObject = (css) => {
330
- return {
331
- "@desktop": css[`@desktop`],
332
- "@mobile": css[`@mobile`]
333
- };
334
- };
335
-
336
- // src/renderer.tsx
337
- var import_core = require("@weaverse/core");
338
- var import_react5 = __toESM(require("react"));
333
+ // src/context.ts
339
334
  var createRootContext = (configs) => {
340
- const rootContext = new import_core.Weaverse(configs);
335
+ let rootContext = new import_core.Weaverse(configs);
341
336
  Object.keys(elements_default).forEach((key) => {
342
337
  rootContext.registerElement(elements_default[key]);
343
338
  });
@@ -346,92 +341,107 @@ var createRootContext = (configs) => {
346
341
  var WeaverseContext = (0, import_react5.createContext)({});
347
342
  var WeaverseContextProvider = WeaverseContext.Provider;
348
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
349
372
  var WeaverseRoot = ({ context }) => {
350
373
  var _a;
351
- let [, setData] = (0, import_react5.useState)(context.projectData);
352
- (0, import_react5.useEffect)(() => {
353
- let handleUpdate = () => {
354
- setData({});
355
- };
356
- 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);
357
379
  if (context.projectData) {
358
- setTimeout(handleUpdate, 110);
380
+ setTimeout(update, 110);
359
381
  }
382
+ context.contentRootElement = rootRef.current;
360
383
  return () => {
361
- context.unsubscribe(handleUpdate);
384
+ context.unsubscribe(update);
362
385
  };
363
386
  }, []);
364
387
  let eventHandlers = ((_a = context == null ? void 0 : context.studioBridge) == null ? void 0 : _a.eventHandlers) || {};
365
388
  let themeClass = context.stitchesInstance.theme.className;
366
- return /* @__PURE__ */ import_react5.default.createElement("div", __spreadValues({
389
+ return /* @__PURE__ */ import_react6.default.createElement("div", __spreadProps(__spreadValues({
367
390
  className: `weaverse-content-root ${themeClass}`
368
- }, eventHandlers), /* @__PURE__ */ import_react5.default.createElement(WeaverseContextProvider, {
391
+ }, eventHandlers), {
392
+ ref: rootRef
393
+ }), /* @__PURE__ */ import_react6.default.createElement(WeaverseContextProvider, {
369
394
  value: context
370
- }, /* @__PURE__ */ import_react5.default.createElement(RenderItem, {
371
- itemId: context.projectData.rootId || 0
395
+ }, /* @__PURE__ */ import_react6.default.createElement(ItemInstance, {
396
+ id: context.projectData.rootId || 0
372
397
  })));
373
398
  };
374
- var Item = ({ itemInstance, elementInstances }) => {
375
- var _b;
376
- let [data, setData] = (0, import_react5.useState)(itemInstance.data);
377
- let _a = data, { id, type, childIds, css, className: cls = "" } = _a, rest = __objRest(_a, ["id", "type", "childIds", "css", "className"]);
378
- (0, import_react5.useEffect)(() => {
379
- let handleUpdate = (update) => {
380
- setData(__spreadValues({}, update));
381
- };
382
- itemInstance.subscribe(handleUpdate);
383
- if (import_core.isBrowser && !itemInstance.ref.current) {
384
- 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, {
385
408
  current: document.querySelector(`[data-wv-id="${id}"]`)
386
409
  });
387
410
  }
388
411
  return () => {
389
- itemInstance.unsubscribe(handleUpdate);
412
+ instance.unsubscribe(update);
390
413
  };
391
414
  }, []);
392
- let context = (0, import_react5.useContext)(WeaverseContext);
393
- let className = "";
394
- if (css) {
395
- let formattedCss = shortCssObject(css);
396
- let { className: newClass = "" } = context.stitchesInstance.css(formattedCss)();
397
- let { stitchesClass } = itemInstance;
398
- let otherClass = (((_b = itemInstance.ref.current) == null ? void 0 : _b.className) || "").replace(stitchesClass, "").replace(cls, "").trim();
399
- className = `${cls} ${newClass} ${otherClass}`.trim();
400
- itemInstance.stitchesClass = newClass;
401
- }
402
- let element = elementInstances.get(type) || elementInstances.get("base");
403
- if (element == null ? void 0 : element.Component) {
404
- let Component = element.Component;
415
+ let Element = elementInstances.get(type || "base");
416
+ if (Element == null ? void 0 : Element.Component) {
417
+ let Component = Element.Component;
405
418
  if (Component.$$typeof === Symbol.for("react.forward_ref")) {
406
- rest.ref = itemInstance.ref;
419
+ rest.ref = instance.ref;
407
420
  }
408
- return /* @__PURE__ */ import_react5.default.createElement(Component, __spreadProps(__spreadValues({
421
+ return /* @__PURE__ */ import_react6.default.createElement(Component, __spreadValues({
409
422
  key: id,
410
423
  "data-wv-type": type,
411
- "data-wv-id": id
412
- }, rest), {
413
- className
414
- }), Array.isArray(childIds) && childIds.map((childId) => /* @__PURE__ */ import_react5.default.createElement(RenderItem, {
415
- key: childId,
416
- 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
417
429
  })));
418
430
  }
419
431
  return null;
420
432
  };
421
- var RenderItem = ({
422
- itemId
423
- }) => {
424
- let context = (0, import_react5.useContext)(WeaverseContext);
425
- let { itemInstances, elementInstances } = context;
426
- let itemInstance = itemInstances.get(itemId);
427
- if (itemInstance) {
428
- return /* @__PURE__ */ import_react5.default.createElement(Item, {
429
- itemInstance,
430
- elementInstances
431
- });
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");
432
441
  }
433
- console.warn(`Item instance ${itemId} not found`);
434
- return /* @__PURE__ */ import_react5.default.createElement(import_react5.default.Fragment, null);
442
+ return /* @__PURE__ */ import_react6.default.createElement(ItemComponent, {
443
+ instance
444
+ });
435
445
  };
436
446
 
437
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) => {
@@ -171,7 +175,6 @@ var schema4 = {
171
175
  data: {
172
176
  css: {
173
177
  "@desktop": {
174
- overflow: "hidden",
175
178
  paddingTop: "16px",
176
179
  paddingBottom: "16px",
177
180
  paddingLeft: "var(--gap)",
@@ -259,7 +262,9 @@ var schema6 = {
259
262
  data: {
260
263
  css: {
261
264
  "@desktop": {
262
- padding: "10px"
265
+ width: "100%",
266
+ height: "100%",
267
+ objectFit: "cover"
263
268
  }
264
269
  }
265
270
  }
@@ -295,19 +300,9 @@ var elements = {
295
300
  };
296
301
  var elements_default = elements;
297
302
 
298
- // src/utils/css.ts
299
- var shortCssObject = (css) => {
300
- return {
301
- "@desktop": css[`@desktop`],
302
- "@mobile": css[`@mobile`]
303
- };
304
- };
305
-
306
- // src/renderer.tsx
307
- import { isBrowser, Weaverse } from "@weaverse/core";
308
- import React7, { createContext, useContext, useEffect, useState } from "react";
303
+ // src/context.ts
309
304
  var createRootContext = (configs) => {
310
- const rootContext = new Weaverse(configs);
305
+ let rootContext = new Weaverse(configs);
311
306
  Object.keys(elements_default).forEach((key) => {
312
307
  rootContext.registerElement(elements_default[key]);
313
308
  });
@@ -316,92 +311,107 @@ var createRootContext = (configs) => {
316
311
  var WeaverseContext = createContext({});
317
312
  var WeaverseContextProvider = WeaverseContext.Provider;
318
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
319
342
  var WeaverseRoot = ({ context }) => {
320
343
  var _a;
321
344
  let [, setData] = useState(context.projectData);
345
+ let rootRef = useRef();
322
346
  useEffect(() => {
323
- let handleUpdate = () => {
324
- setData({});
325
- };
326
- context.subscribe(handleUpdate);
347
+ let update = () => setData({});
348
+ context.subscribe(update);
327
349
  if (context.projectData) {
328
- setTimeout(handleUpdate, 110);
350
+ setTimeout(update, 110);
329
351
  }
352
+ context.contentRootElement = rootRef.current;
330
353
  return () => {
331
- context.unsubscribe(handleUpdate);
354
+ context.unsubscribe(update);
332
355
  };
333
356
  }, []);
334
357
  let eventHandlers = ((_a = context == null ? void 0 : context.studioBridge) == null ? void 0 : _a.eventHandlers) || {};
335
358
  let themeClass = context.stitchesInstance.theme.className;
336
- return /* @__PURE__ */ React7.createElement("div", __spreadValues({
359
+ return /* @__PURE__ */ React7.createElement("div", __spreadProps(__spreadValues({
337
360
  className: `weaverse-content-root ${themeClass}`
338
- }, eventHandlers), /* @__PURE__ */ React7.createElement(WeaverseContextProvider, {
361
+ }, eventHandlers), {
362
+ ref: rootRef
363
+ }), /* @__PURE__ */ React7.createElement(WeaverseContextProvider, {
339
364
  value: context
340
- }, /* @__PURE__ */ React7.createElement(RenderItem, {
341
- itemId: context.projectData.rootId || 0
365
+ }, /* @__PURE__ */ React7.createElement(ItemInstance, {
366
+ id: context.projectData.rootId || 0
342
367
  })));
343
368
  };
344
- var Item = ({ itemInstance, elementInstances }) => {
345
- var _b;
346
- let [data, setData] = useState(itemInstance.data);
347
- let _a = data, { id, type, childIds, css, className: cls = "" } = _a, rest = __objRest(_a, ["id", "type", "childIds", "css", "className"]);
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"]);
348
373
  useEffect(() => {
349
- let handleUpdate = (update) => {
350
- setData(__spreadValues({}, update));
351
- };
352
- itemInstance.subscribe(handleUpdate);
353
- if (isBrowser && !itemInstance.ref.current) {
354
- 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, {
355
378
  current: document.querySelector(`[data-wv-id="${id}"]`)
356
379
  });
357
380
  }
358
381
  return () => {
359
- itemInstance.unsubscribe(handleUpdate);
382
+ instance.unsubscribe(update);
360
383
  };
361
384
  }, []);
362
- let context = useContext(WeaverseContext);
363
- let className = "";
364
- if (css) {
365
- let formattedCss = shortCssObject(css);
366
- let { className: newClass = "" } = context.stitchesInstance.css(formattedCss)();
367
- let { stitchesClass } = itemInstance;
368
- let otherClass = (((_b = itemInstance.ref.current) == null ? void 0 : _b.className) || "").replace(stitchesClass, "").replace(cls, "").trim();
369
- className = `${cls} ${newClass} ${otherClass}`.trim();
370
- itemInstance.stitchesClass = newClass;
371
- }
372
- let element = elementInstances.get(type) || elementInstances.get("base");
373
- if (element == null ? void 0 : element.Component) {
374
- let Component = element.Component;
385
+ let Element = elementInstances.get(type || "base");
386
+ if (Element == null ? void 0 : Element.Component) {
387
+ let Component = Element.Component;
375
388
  if (Component.$$typeof === Symbol.for("react.forward_ref")) {
376
- rest.ref = itemInstance.ref;
389
+ rest.ref = instance.ref;
377
390
  }
378
- return /* @__PURE__ */ React7.createElement(Component, __spreadProps(__spreadValues({
391
+ return /* @__PURE__ */ React7.createElement(Component, __spreadValues({
379
392
  key: id,
380
393
  "data-wv-type": type,
381
- "data-wv-id": id
382
- }, rest), {
383
- className
384
- }), Array.isArray(childIds) && childIds.map((childId) => /* @__PURE__ */ React7.createElement(RenderItem, {
385
- key: childId,
386
- 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
387
399
  })));
388
400
  }
389
401
  return null;
390
402
  };
391
- var RenderItem = ({
392
- itemId
393
- }) => {
403
+ var ItemInstance = ({ id }) => {
394
404
  let context = useContext(WeaverseContext);
395
- let { itemInstances, elementInstances } = context;
396
- let itemInstance = itemInstances.get(itemId);
397
- if (itemInstance) {
398
- return /* @__PURE__ */ React7.createElement(Item, {
399
- itemInstance,
400
- elementInstances
401
- });
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");
402
411
  }
403
- console.warn(`Item instance ${itemId} not found`);
404
- return /* @__PURE__ */ React7.createElement(React7.Fragment, null);
412
+ return /* @__PURE__ */ React7.createElement(ItemComponent, {
413
+ instance
414
+ });
405
415
  };
406
416
 
407
417
  // src/index.ts
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.6.8",
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.8"
34
+ "@weaverse/core": "0.6.9"
35
35
  }
36
36
  }