@weaverse/react 0.6.6 → 0.6.10

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)",
@@ -211,13 +214,16 @@ var schema4 = {
211
214
  display: "grid !important",
212
215
  gridTemplateRows: "repeat(var(--rows), var(--row-size))",
213
216
  gridTemplateColumns: "repeat(var(--columns), minmax(0, var(--col-size)))",
214
- gridGap: "var(--gap)",
217
+ gap: "var(--gap)",
215
218
  maxWidth: "var(--grid-size)"
216
219
  }
217
220
  },
218
221
  "@mobile": {
219
- display: "flex !important",
220
- flexDirection: "column"
222
+ padding: "0",
223
+ "> [data-layout-content]": {
224
+ display: "flex !important",
225
+ flexDirection: "column"
226
+ }
221
227
  }
222
228
  },
223
229
  gridSize: 1224,
@@ -286,7 +292,9 @@ var schema6 = {
286
292
  data: {
287
293
  css: {
288
294
  "@desktop": {
289
- padding: "10px"
295
+ width: "100%",
296
+ height: "100%",
297
+ objectFit: "cover"
290
298
  }
291
299
  }
292
300
  }
@@ -322,19 +330,9 @@ var elements = {
322
330
  };
323
331
  var elements_default = elements;
324
332
 
325
- // src/utils/css.ts
326
- var shortCssObject = (css) => {
327
- return {
328
- "@desktop": css[`@desktop`],
329
- "@mobile": css[`@mobile`]
330
- };
331
- };
332
-
333
- // src/renderer.tsx
334
- var import_core = require("@weaverse/core");
335
- var import_react5 = __toESM(require("react"));
333
+ // src/context.ts
336
334
  var createRootContext = (configs) => {
337
- const rootContext = new import_core.Weaverse(configs);
335
+ let rootContext = new import_core.Weaverse(configs);
338
336
  Object.keys(elements_default).forEach((key) => {
339
337
  rootContext.registerElement(elements_default[key]);
340
338
  });
@@ -343,92 +341,107 @@ var createRootContext = (configs) => {
343
341
  var WeaverseContext = (0, import_react5.createContext)({});
344
342
  var WeaverseContextProvider = WeaverseContext.Provider;
345
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
346
372
  var WeaverseRoot = ({ context }) => {
347
373
  var _a;
348
- let [, setData] = (0, import_react5.useState)(context.projectData);
349
- (0, import_react5.useEffect)(() => {
350
- let handleUpdate = () => {
351
- setData({});
352
- };
353
- 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);
354
379
  if (context.projectData) {
355
- setTimeout(handleUpdate, 110);
380
+ setTimeout(update, 110);
356
381
  }
382
+ context.contentRootElement = rootRef.current;
357
383
  return () => {
358
- context.unsubscribe(handleUpdate);
384
+ context.unsubscribe(update);
359
385
  };
360
386
  }, []);
361
387
  let eventHandlers = ((_a = context == null ? void 0 : context.studioBridge) == null ? void 0 : _a.eventHandlers) || {};
362
388
  let themeClass = context.stitchesInstance.theme.className;
363
- return /* @__PURE__ */ import_react5.default.createElement("div", __spreadValues({
389
+ return /* @__PURE__ */ import_react6.default.createElement("div", __spreadProps(__spreadValues({
364
390
  className: `weaverse-content-root ${themeClass}`
365
- }, eventHandlers), /* @__PURE__ */ import_react5.default.createElement(WeaverseContextProvider, {
391
+ }, eventHandlers), {
392
+ ref: rootRef
393
+ }), /* @__PURE__ */ import_react6.default.createElement(WeaverseContextProvider, {
366
394
  value: context
367
- }, /* @__PURE__ */ import_react5.default.createElement(RenderItem, {
368
- itemId: context.projectData.rootId || 0
395
+ }, /* @__PURE__ */ import_react6.default.createElement(ItemInstance, {
396
+ id: context.projectData.rootId || 0
369
397
  })));
370
398
  };
371
- var Item = ({ itemInstance, elementInstances }) => {
372
- var _b;
373
- let [data, setData] = (0, import_react5.useState)(itemInstance.data);
374
- let _a = data, { id, type, childIds, css, className: cls = "" } = _a, rest = __objRest(_a, ["id", "type", "childIds", "css", "className"]);
375
- (0, import_react5.useEffect)(() => {
376
- let handleUpdate = (update) => {
377
- setData(__spreadValues({}, update));
378
- };
379
- itemInstance.subscribe(handleUpdate);
380
- if (import_core.isBrowser && !itemInstance.ref.current) {
381
- 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, {
382
408
  current: document.querySelector(`[data-wv-id="${id}"]`)
383
409
  });
384
410
  }
385
411
  return () => {
386
- itemInstance.unsubscribe(handleUpdate);
412
+ instance.unsubscribe(update);
387
413
  };
388
414
  }, []);
389
- let context = (0, import_react5.useContext)(WeaverseContext);
390
- let className = "";
391
- if (css) {
392
- let formattedCss = shortCssObject(css);
393
- let { className: newClass = "" } = context.stitchesInstance.css(formattedCss)();
394
- let { stitchesClass } = itemInstance;
395
- let otherClass = (((_b = itemInstance.ref.current) == null ? void 0 : _b.className) || "").replace(stitchesClass, "").replace(cls, "").trim();
396
- className = `${cls} ${newClass} ${otherClass}`.trim();
397
- itemInstance.stitchesClass = newClass;
398
- }
399
- let element = elementInstances.get(type) || elementInstances.get("base");
400
- if (element == null ? void 0 : element.Component) {
401
- let Component = element.Component;
415
+ let Element = elementInstances.get(type || "base");
416
+ if (Element == null ? void 0 : Element.Component) {
417
+ let Component = Element.Component;
402
418
  if (Component.$$typeof === Symbol.for("react.forward_ref")) {
403
- rest.ref = itemInstance.ref;
419
+ rest.ref = instance.ref;
404
420
  }
405
- return /* @__PURE__ */ import_react5.default.createElement(Component, __spreadProps(__spreadValues({
421
+ return /* @__PURE__ */ import_react6.default.createElement(Component, __spreadValues({
406
422
  key: id,
407
423
  "data-wv-type": type,
408
- "data-wv-id": id
409
- }, rest), {
410
- className
411
- }), Array.isArray(childIds) && childIds.map((childId) => /* @__PURE__ */ import_react5.default.createElement(RenderItem, {
412
- key: childId,
413
- 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
414
429
  })));
415
430
  }
416
431
  return null;
417
432
  };
418
- var RenderItem = ({
419
- itemId
420
- }) => {
421
- let context = (0, import_react5.useContext)(WeaverseContext);
422
- let { itemInstances, elementInstances } = context;
423
- let itemInstance = itemInstances.get(itemId);
424
- if (itemInstance) {
425
- return /* @__PURE__ */ import_react5.default.createElement(Item, {
426
- itemInstance,
427
- elementInstances
428
- });
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");
429
441
  }
430
- console.warn(`Item instance ${itemId} not found`);
431
- return /* @__PURE__ */ import_react5.default.createElement(import_react5.default.Fragment, null);
442
+ return /* @__PURE__ */ import_react6.default.createElement(ItemComponent, {
443
+ instance
444
+ });
432
445
  };
433
446
 
434
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)",
@@ -181,13 +184,16 @@ var schema4 = {
181
184
  display: "grid !important",
182
185
  gridTemplateRows: "repeat(var(--rows), var(--row-size))",
183
186
  gridTemplateColumns: "repeat(var(--columns), minmax(0, var(--col-size)))",
184
- gridGap: "var(--gap)",
187
+ gap: "var(--gap)",
185
188
  maxWidth: "var(--grid-size)"
186
189
  }
187
190
  },
188
191
  "@mobile": {
189
- display: "flex !important",
190
- flexDirection: "column"
192
+ padding: "0",
193
+ "> [data-layout-content]": {
194
+ display: "flex !important",
195
+ flexDirection: "column"
196
+ }
191
197
  }
192
198
  },
193
199
  gridSize: 1224,
@@ -256,7 +262,9 @@ var schema6 = {
256
262
  data: {
257
263
  css: {
258
264
  "@desktop": {
259
- padding: "10px"
265
+ width: "100%",
266
+ height: "100%",
267
+ objectFit: "cover"
260
268
  }
261
269
  }
262
270
  }
@@ -292,19 +300,9 @@ var elements = {
292
300
  };
293
301
  var elements_default = elements;
294
302
 
295
- // src/utils/css.ts
296
- var shortCssObject = (css) => {
297
- return {
298
- "@desktop": css[`@desktop`],
299
- "@mobile": css[`@mobile`]
300
- };
301
- };
302
-
303
- // src/renderer.tsx
304
- import { isBrowser, Weaverse } from "@weaverse/core";
305
- import React7, { createContext, useContext, useEffect, useState } from "react";
303
+ // src/context.ts
306
304
  var createRootContext = (configs) => {
307
- const rootContext = new Weaverse(configs);
305
+ let rootContext = new Weaverse(configs);
308
306
  Object.keys(elements_default).forEach((key) => {
309
307
  rootContext.registerElement(elements_default[key]);
310
308
  });
@@ -313,92 +311,107 @@ var createRootContext = (configs) => {
313
311
  var WeaverseContext = createContext({});
314
312
  var WeaverseContextProvider = WeaverseContext.Provider;
315
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
316
342
  var WeaverseRoot = ({ context }) => {
317
343
  var _a;
318
344
  let [, setData] = useState(context.projectData);
345
+ let rootRef = useRef();
319
346
  useEffect(() => {
320
- let handleUpdate = () => {
321
- setData({});
322
- };
323
- context.subscribe(handleUpdate);
347
+ let update = () => setData({});
348
+ context.subscribe(update);
324
349
  if (context.projectData) {
325
- setTimeout(handleUpdate, 110);
350
+ setTimeout(update, 110);
326
351
  }
352
+ context.contentRootElement = rootRef.current;
327
353
  return () => {
328
- context.unsubscribe(handleUpdate);
354
+ context.unsubscribe(update);
329
355
  };
330
356
  }, []);
331
357
  let eventHandlers = ((_a = context == null ? void 0 : context.studioBridge) == null ? void 0 : _a.eventHandlers) || {};
332
358
  let themeClass = context.stitchesInstance.theme.className;
333
- return /* @__PURE__ */ React7.createElement("div", __spreadValues({
359
+ return /* @__PURE__ */ React7.createElement("div", __spreadProps(__spreadValues({
334
360
  className: `weaverse-content-root ${themeClass}`
335
- }, eventHandlers), /* @__PURE__ */ React7.createElement(WeaverseContextProvider, {
361
+ }, eventHandlers), {
362
+ ref: rootRef
363
+ }), /* @__PURE__ */ React7.createElement(WeaverseContextProvider, {
336
364
  value: context
337
- }, /* @__PURE__ */ React7.createElement(RenderItem, {
338
- itemId: context.projectData.rootId || 0
365
+ }, /* @__PURE__ */ React7.createElement(ItemInstance, {
366
+ id: context.projectData.rootId || 0
339
367
  })));
340
368
  };
341
- var Item = ({ itemInstance, elementInstances }) => {
342
- var _b;
343
- let [data, setData] = useState(itemInstance.data);
344
- 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"]);
345
373
  useEffect(() => {
346
- let handleUpdate = (update) => {
347
- setData(__spreadValues({}, update));
348
- };
349
- itemInstance.subscribe(handleUpdate);
350
- if (isBrowser && !itemInstance.ref.current) {
351
- 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, {
352
378
  current: document.querySelector(`[data-wv-id="${id}"]`)
353
379
  });
354
380
  }
355
381
  return () => {
356
- itemInstance.unsubscribe(handleUpdate);
382
+ instance.unsubscribe(update);
357
383
  };
358
384
  }, []);
359
- let context = useContext(WeaverseContext);
360
- let className = "";
361
- if (css) {
362
- let formattedCss = shortCssObject(css);
363
- let { className: newClass = "" } = context.stitchesInstance.css(formattedCss)();
364
- let { stitchesClass } = itemInstance;
365
- let otherClass = (((_b = itemInstance.ref.current) == null ? void 0 : _b.className) || "").replace(stitchesClass, "").replace(cls, "").trim();
366
- className = `${cls} ${newClass} ${otherClass}`.trim();
367
- itemInstance.stitchesClass = newClass;
368
- }
369
- let element = elementInstances.get(type) || elementInstances.get("base");
370
- if (element == null ? void 0 : element.Component) {
371
- let Component = element.Component;
385
+ let Element = elementInstances.get(type || "base");
386
+ if (Element == null ? void 0 : Element.Component) {
387
+ let Component = Element.Component;
372
388
  if (Component.$$typeof === Symbol.for("react.forward_ref")) {
373
- rest.ref = itemInstance.ref;
389
+ rest.ref = instance.ref;
374
390
  }
375
- return /* @__PURE__ */ React7.createElement(Component, __spreadProps(__spreadValues({
391
+ return /* @__PURE__ */ React7.createElement(Component, __spreadValues({
376
392
  key: id,
377
393
  "data-wv-type": type,
378
- "data-wv-id": id
379
- }, rest), {
380
- className
381
- }), Array.isArray(childIds) && childIds.map((childId) => /* @__PURE__ */ React7.createElement(RenderItem, {
382
- key: childId,
383
- 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
384
399
  })));
385
400
  }
386
401
  return null;
387
402
  };
388
- var RenderItem = ({
389
- itemId
390
- }) => {
403
+ var ItemInstance = ({ id }) => {
391
404
  let context = useContext(WeaverseContext);
392
- let { itemInstances, elementInstances } = context;
393
- let itemInstance = itemInstances.get(itemId);
394
- if (itemInstance) {
395
- return /* @__PURE__ */ React7.createElement(Item, {
396
- itemInstance,
397
- elementInstances
398
- });
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");
399
411
  }
400
- console.warn(`Item instance ${itemId} not found`);
401
- return /* @__PURE__ */ React7.createElement(React7.Fragment, null);
412
+ return /* @__PURE__ */ React7.createElement(ItemComponent, {
413
+ instance
414
+ });
402
415
  };
403
416
 
404
417
  // src/index.ts
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.6.6",
2
+ "version": "0.6.10",
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.6"
34
+ "@weaverse/core": "0.6.10"
35
35
  }
36
36
  }