@weaverse/react 0.6.2 → 0.6.5

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,10 +1,18 @@
1
1
  import { WeaverseType, Weaverse } from '@weaverse/core';
2
2
  export * from '@weaverse/core';
3
+ import React$1 from 'react';
3
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>;
5
9
  declare type WeaverseRootPropsType = {
6
10
  context: Weaverse;
7
11
  };
8
12
  declare const WeaverseRoot: ({ context }: WeaverseRootPropsType) => JSX.Element;
9
13
 
10
- export { WeaverseRoot, WeaverseRootPropsType, createRootContext };
14
+ interface WeaverseElementProps {
15
+ children?: React.ReactNode;
16
+ }
17
+
18
+ export { WeaverseContext, WeaverseContextConsumer, WeaverseContextProvider, WeaverseElementProps, WeaverseRoot, WeaverseRootPropsType, createRootContext };
package/dist/index.js CHANGED
@@ -52,6 +52,9 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
52
52
  // src/index.ts
53
53
  var src_exports = {};
54
54
  __export(src_exports, {
55
+ WeaverseContext: () => WeaverseContext,
56
+ WeaverseContextConsumer: () => WeaverseContextConsumer,
57
+ WeaverseContextProvider: () => WeaverseContextProvider,
55
58
  WeaverseRoot: () => WeaverseRoot,
56
59
  createRootContext: () => createRootContext
57
60
  });
@@ -91,24 +94,31 @@ var schema2 = {
91
94
  title: "Button",
92
95
  type: "button",
93
96
  styles: [
97
+ {
98
+ type: "dimensions"
99
+ },
94
100
  {
95
101
  type: "alignment"
96
102
  },
97
103
  {
98
- type: "visibility"
104
+ type: "border"
99
105
  },
100
106
  {
101
- type: "dimensions"
107
+ type: "background"
102
108
  },
103
109
  {
104
110
  type: "spacing"
111
+ }
112
+ ],
113
+ settings: [],
114
+ toolbar: [
115
+ {
116
+ type: "delete"
105
117
  },
106
118
  {
107
- type: "background"
119
+ type: "duplicate"
108
120
  }
109
121
  ],
110
- settings: [],
111
- toolbar: [],
112
122
  data: {
113
123
  css: {
114
124
  "@desktop": {
@@ -138,7 +148,7 @@ var schema3 = {
138
148
  backgroundColor: "rgba(248,203,203,0.38)",
139
149
  flexDirection: "column",
140
150
  alignItems: "flex-start",
141
- justifyContent: "center",
151
+ justifyContent: "flex-start",
142
152
  textAlign: "left",
143
153
  gridArea: "1 / 1 / 3 / 6",
144
154
  overflow: "hidden",
@@ -157,7 +167,7 @@ var Layout = (0, import_react3.forwardRef)((props, ref) => {
157
167
  return /* @__PURE__ */ import_react3.default.createElement("div", __spreadProps(__spreadValues({
158
168
  ref
159
169
  }, props), {
160
- children: props.children || "Layout Placeholder"
170
+ children: props.children
161
171
  }));
162
172
  });
163
173
  var schema4 = {
@@ -167,12 +177,12 @@ var schema4 = {
167
177
  css: {
168
178
  "@desktop": {
169
179
  display: "grid !important",
170
- gridTemplateRows: "repeat(auto-fill, $rowSize)",
171
- gridTemplateColumns: "repeat($columns, 1fr)",
172
- gridAutoRows: "$sizes$rowSize",
180
+ gridTemplateRows: "repeat($row-count, $row-size)",
181
+ gridTemplateColumns: "repeat($column-count, 1fr)",
173
182
  gridGap: "$gap",
174
183
  minHeight: "104px",
175
- width: "100%",
184
+ width: "$width",
185
+ maxWidth: "$max-width",
176
186
  margin: "0 auto"
177
187
  },
178
188
  "@mobile": {
@@ -200,7 +210,7 @@ Text.defaultProps = {
200
210
  };
201
211
  var schema5 = {
202
212
  type: "text",
203
- title: "Text Settings",
213
+ title: "Text",
204
214
  settings: [],
205
215
  data: {
206
216
  css: {
@@ -219,6 +229,35 @@ var schema5 = {
219
229
  };
220
230
  var text_default = Text;
221
231
 
232
+ // src/elements/image.tsx
233
+ var import_react4 = __toESM(require("react"));
234
+ var Image = import_react4.default.forwardRef(function Image2(props, ref) {
235
+ let _a = props, { src, alt, children } = _a, rest = __objRest(_a, ["src", "alt", "children"]);
236
+ return /* @__PURE__ */ import_react4.default.createElement("img", __spreadProps(__spreadValues({
237
+ ref
238
+ }, rest), {
239
+ alt,
240
+ src
241
+ }));
242
+ });
243
+ Image.defaultProps = {
244
+ src: "https://ucarecdn.com/48d73272-3fe3-43f6-8b5b-22b68fc5a8c8/section.png",
245
+ alt: "weaverse image element"
246
+ };
247
+ var schema6 = {
248
+ settings: [],
249
+ type: "image",
250
+ title: "Image",
251
+ data: {
252
+ css: {
253
+ "@desktop": {
254
+ padding: "10px"
255
+ }
256
+ }
257
+ }
258
+ };
259
+ var image_default = Image;
260
+
222
261
  // src/elements/index.ts
223
262
  var elements = {
224
263
  Button: {
@@ -240,6 +279,10 @@ var elements = {
240
279
  Container: {
241
280
  Component: container_default,
242
281
  schema: schema3
282
+ },
283
+ Image: {
284
+ Component: image_default,
285
+ schema: schema6
243
286
  }
244
287
  };
245
288
  var elements_default = elements;
@@ -254,7 +297,7 @@ var shortCssObject = (css) => {
254
297
 
255
298
  // src/renderer.tsx
256
299
  var import_core = require("@weaverse/core");
257
- var React6 = __toESM(require("react"));
300
+ var import_react5 = __toESM(require("react"));
258
301
  var createRootContext = (configs) => {
259
302
  const rootContext = new import_core.Weaverse(configs);
260
303
  Object.keys(elements_default).forEach((key) => {
@@ -262,10 +305,13 @@ var createRootContext = (configs) => {
262
305
  });
263
306
  return rootContext;
264
307
  };
308
+ var WeaverseContext = (0, import_react5.createContext)({});
309
+ var WeaverseContextProvider = WeaverseContext.Provider;
310
+ var WeaverseContextConsumer = WeaverseContext.Consumer;
265
311
  var WeaverseRoot = ({ context }) => {
266
312
  var _a;
267
- let [, setData] = React6.useState(context.projectData);
268
- React6.useEffect(() => {
313
+ let [, setData] = (0, import_react5.useState)(context.projectData);
314
+ (0, import_react5.useEffect)(() => {
269
315
  let handleUpdate = () => {
270
316
  setData({});
271
317
  };
@@ -277,19 +323,22 @@ var WeaverseRoot = ({ context }) => {
277
323
  context.unsubscribe(handleUpdate);
278
324
  };
279
325
  }, []);
280
- let handleProps = ((_a = context == null ? void 0 : context.studioBridge) == null ? void 0 : _a.handleProps) || {};
326
+ let eventHandlers = ((_a = context == null ? void 0 : context.studioBridge) == null ? void 0 : _a.eventHandlers) || {};
281
327
  let themeClass = context.stitchesInstance.theme.className;
282
- return /* @__PURE__ */ React6.createElement("div", __spreadValues({
328
+ return /* @__PURE__ */ import_react5.default.createElement("div", __spreadValues({
283
329
  className: `weaverse-content-root ${themeClass}`
284
- }, handleProps), /* @__PURE__ */ React6.createElement(RenderItem, {
285
- itemId: context.projectData.rootId || 0,
286
- context
287
- }));
330
+ }, eventHandlers), /* @__PURE__ */ import_react5.default.createElement(WeaverseContextProvider, {
331
+ value: context
332
+ }, /* @__PURE__ */ import_react5.default.createElement(RenderItem, {
333
+ itemId: context.projectData.rootId || 0
334
+ })));
288
335
  };
289
- var Item = ({ itemInstance, elementInstances, context }) => {
290
- let [data, setData] = React6.useState(itemInstance.data);
291
- let _a = data, { id, type, childIds, css, className } = _a, rest = __objRest(_a, ["id", "type", "childIds", "css", "className"]);
292
- React6.useEffect(() => {
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)(() => {
293
342
  let handleUpdate = (update) => {
294
343
  setData(__spreadValues({}, update));
295
344
  };
@@ -303,11 +352,15 @@ var Item = ({ itemInstance, elementInstances, context }) => {
303
352
  itemInstance.unsubscribe(handleUpdate);
304
353
  };
305
354
  }, []);
306
- let realClassName = className;
355
+ let context = (0, import_react5.useContext)(WeaverseContext);
356
+ let className = "";
307
357
  if (css) {
308
358
  let formattedCss = shortCssObject(css);
309
- let selector = context.stitchesInstance.css(formattedCss)().className;
310
- realClassName = realClassName ? `${selector} ${realClassName}` : selector;
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;
311
364
  }
312
365
  let element = elementInstances.get(type) || elementInstances.get("base");
313
366
  if (element == null ? void 0 : element.Component) {
@@ -315,41 +368,42 @@ var Item = ({ itemInstance, elementInstances, context }) => {
315
368
  if (Component.$$typeof === Symbol.for("react.forward_ref")) {
316
369
  rest.ref = itemInstance.ref;
317
370
  }
318
- return /* @__PURE__ */ React6.createElement(Component, __spreadProps(__spreadValues({
371
+ return /* @__PURE__ */ import_react5.default.createElement(Component, __spreadProps(__spreadValues({
319
372
  key: id,
320
373
  "data-wv-type": type,
321
374
  "data-wv-id": id
322
375
  }, rest), {
323
- className: realClassName
324
- }), Array.isArray(childIds) && childIds.map((childId) => /* @__PURE__ */ React6.createElement(RenderItem, {
376
+ className
377
+ }), Array.isArray(childIds) && childIds.map((childId) => /* @__PURE__ */ import_react5.default.createElement(RenderItem, {
325
378
  key: childId,
326
- itemId: childId,
327
- context
379
+ itemId: childId
328
380
  })));
329
381
  }
330
382
  return null;
331
383
  };
332
384
  var RenderItem = ({
333
- itemId,
334
- context
385
+ itemId
335
386
  }) => {
387
+ let context = (0, import_react5.useContext)(WeaverseContext);
336
388
  let { itemInstances, elementInstances } = context;
337
389
  let itemInstance = itemInstances.get(itemId);
338
390
  if (itemInstance) {
339
- return /* @__PURE__ */ React6.createElement(Item, {
391
+ return /* @__PURE__ */ import_react5.default.createElement(Item, {
340
392
  itemInstance,
341
- elementInstances,
342
- context
393
+ elementInstances
343
394
  });
344
395
  }
345
396
  console.warn(`Item instance ${itemId} not found`);
346
- return /* @__PURE__ */ React6.createElement(React6.Fragment, null);
397
+ return /* @__PURE__ */ import_react5.default.createElement(import_react5.default.Fragment, null);
347
398
  };
348
399
 
349
400
  // src/index.ts
350
401
  __reExport(src_exports, require("@weaverse/core"), module.exports);
351
402
  // Annotate the CommonJS export names for ESM import in node:
352
403
  0 && (module.exports = {
404
+ WeaverseContext,
405
+ WeaverseContextConsumer,
406
+ WeaverseContextProvider,
353
407
  WeaverseRoot,
354
408
  createRootContext
355
409
  });
package/dist/index.mjs CHANGED
@@ -64,24 +64,31 @@ var schema2 = {
64
64
  title: "Button",
65
65
  type: "button",
66
66
  styles: [
67
+ {
68
+ type: "dimensions"
69
+ },
67
70
  {
68
71
  type: "alignment"
69
72
  },
70
73
  {
71
- type: "visibility"
74
+ type: "border"
72
75
  },
73
76
  {
74
- type: "dimensions"
77
+ type: "background"
75
78
  },
76
79
  {
77
80
  type: "spacing"
81
+ }
82
+ ],
83
+ settings: [],
84
+ toolbar: [
85
+ {
86
+ type: "delete"
78
87
  },
79
88
  {
80
- type: "background"
89
+ type: "duplicate"
81
90
  }
82
91
  ],
83
- settings: [],
84
- toolbar: [],
85
92
  data: {
86
93
  css: {
87
94
  "@desktop": {
@@ -111,7 +118,7 @@ var schema3 = {
111
118
  backgroundColor: "rgba(248,203,203,0.38)",
112
119
  flexDirection: "column",
113
120
  alignItems: "flex-start",
114
- justifyContent: "center",
121
+ justifyContent: "flex-start",
115
122
  textAlign: "left",
116
123
  gridArea: "1 / 1 / 3 / 6",
117
124
  overflow: "hidden",
@@ -130,7 +137,7 @@ var Layout = forwardRef3((props, ref) => {
130
137
  return /* @__PURE__ */ React4.createElement("div", __spreadProps(__spreadValues({
131
138
  ref
132
139
  }, props), {
133
- children: props.children || "Layout Placeholder"
140
+ children: props.children
134
141
  }));
135
142
  });
136
143
  var schema4 = {
@@ -140,12 +147,12 @@ var schema4 = {
140
147
  css: {
141
148
  "@desktop": {
142
149
  display: "grid !important",
143
- gridTemplateRows: "repeat(auto-fill, $rowSize)",
144
- gridTemplateColumns: "repeat($columns, 1fr)",
145
- gridAutoRows: "$sizes$rowSize",
150
+ gridTemplateRows: "repeat($row-count, $row-size)",
151
+ gridTemplateColumns: "repeat($column-count, 1fr)",
146
152
  gridGap: "$gap",
147
153
  minHeight: "104px",
148
- width: "100%",
154
+ width: "$width",
155
+ maxWidth: "$max-width",
149
156
  margin: "0 auto"
150
157
  },
151
158
  "@mobile": {
@@ -173,7 +180,7 @@ Text.defaultProps = {
173
180
  };
174
181
  var schema5 = {
175
182
  type: "text",
176
- title: "Text Settings",
183
+ title: "Text",
177
184
  settings: [],
178
185
  data: {
179
186
  css: {
@@ -192,6 +199,35 @@ var schema5 = {
192
199
  };
193
200
  var text_default = Text;
194
201
 
202
+ // src/elements/image.tsx
203
+ import React6 from "react";
204
+ var Image = React6.forwardRef(function Image2(props, ref) {
205
+ let _a = props, { src, alt, children } = _a, rest = __objRest(_a, ["src", "alt", "children"]);
206
+ return /* @__PURE__ */ React6.createElement("img", __spreadProps(__spreadValues({
207
+ ref
208
+ }, rest), {
209
+ alt,
210
+ src
211
+ }));
212
+ });
213
+ Image.defaultProps = {
214
+ src: "https://ucarecdn.com/48d73272-3fe3-43f6-8b5b-22b68fc5a8c8/section.png",
215
+ alt: "weaverse image element"
216
+ };
217
+ var schema6 = {
218
+ settings: [],
219
+ type: "image",
220
+ title: "Image",
221
+ data: {
222
+ css: {
223
+ "@desktop": {
224
+ padding: "10px"
225
+ }
226
+ }
227
+ }
228
+ };
229
+ var image_default = Image;
230
+
195
231
  // src/elements/index.ts
196
232
  var elements = {
197
233
  Button: {
@@ -213,6 +249,10 @@ var elements = {
213
249
  Container: {
214
250
  Component: container_default,
215
251
  schema: schema3
252
+ },
253
+ Image: {
254
+ Component: image_default,
255
+ schema: schema6
216
256
  }
217
257
  };
218
258
  var elements_default = elements;
@@ -226,11 +266,8 @@ var shortCssObject = (css) => {
226
266
  };
227
267
 
228
268
  // src/renderer.tsx
229
- import {
230
- isBrowser,
231
- Weaverse
232
- } from "@weaverse/core";
233
- import * as React6 from "react";
269
+ import { isBrowser, Weaverse } from "@weaverse/core";
270
+ import React7, { createContext, useContext, useEffect, useState } from "react";
234
271
  var createRootContext = (configs) => {
235
272
  const rootContext = new Weaverse(configs);
236
273
  Object.keys(elements_default).forEach((key) => {
@@ -238,10 +275,13 @@ var createRootContext = (configs) => {
238
275
  });
239
276
  return rootContext;
240
277
  };
278
+ var WeaverseContext = createContext({});
279
+ var WeaverseContextProvider = WeaverseContext.Provider;
280
+ var WeaverseContextConsumer = WeaverseContext.Consumer;
241
281
  var WeaverseRoot = ({ context }) => {
242
282
  var _a;
243
- let [, setData] = React6.useState(context.projectData);
244
- React6.useEffect(() => {
283
+ let [, setData] = useState(context.projectData);
284
+ useEffect(() => {
245
285
  let handleUpdate = () => {
246
286
  setData({});
247
287
  };
@@ -253,19 +293,22 @@ var WeaverseRoot = ({ context }) => {
253
293
  context.unsubscribe(handleUpdate);
254
294
  };
255
295
  }, []);
256
- let handleProps = ((_a = context == null ? void 0 : context.studioBridge) == null ? void 0 : _a.handleProps) || {};
296
+ let eventHandlers = ((_a = context == null ? void 0 : context.studioBridge) == null ? void 0 : _a.eventHandlers) || {};
257
297
  let themeClass = context.stitchesInstance.theme.className;
258
- return /* @__PURE__ */ React6.createElement("div", __spreadValues({
298
+ return /* @__PURE__ */ React7.createElement("div", __spreadValues({
259
299
  className: `weaverse-content-root ${themeClass}`
260
- }, handleProps), /* @__PURE__ */ React6.createElement(RenderItem, {
261
- itemId: context.projectData.rootId || 0,
262
- context
263
- }));
300
+ }, eventHandlers), /* @__PURE__ */ React7.createElement(WeaverseContextProvider, {
301
+ value: context
302
+ }, /* @__PURE__ */ React7.createElement(RenderItem, {
303
+ itemId: context.projectData.rootId || 0
304
+ })));
264
305
  };
265
- var Item = ({ itemInstance, elementInstances, context }) => {
266
- let [data, setData] = React6.useState(itemInstance.data);
267
- let _a = data, { id, type, childIds, css, className } = _a, rest = __objRest(_a, ["id", "type", "childIds", "css", "className"]);
268
- React6.useEffect(() => {
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);
311
+ useEffect(() => {
269
312
  let handleUpdate = (update) => {
270
313
  setData(__spreadValues({}, update));
271
314
  };
@@ -279,11 +322,15 @@ var Item = ({ itemInstance, elementInstances, context }) => {
279
322
  itemInstance.unsubscribe(handleUpdate);
280
323
  };
281
324
  }, []);
282
- let realClassName = className;
325
+ let context = useContext(WeaverseContext);
326
+ let className = "";
283
327
  if (css) {
284
328
  let formattedCss = shortCssObject(css);
285
- let selector = context.stitchesInstance.css(formattedCss)().className;
286
- realClassName = realClassName ? `${selector} ${realClassName}` : selector;
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;
287
334
  }
288
335
  let element = elementInstances.get(type) || elementInstances.get("base");
289
336
  if (element == null ? void 0 : element.Component) {
@@ -291,40 +338,41 @@ var Item = ({ itemInstance, elementInstances, context }) => {
291
338
  if (Component.$$typeof === Symbol.for("react.forward_ref")) {
292
339
  rest.ref = itemInstance.ref;
293
340
  }
294
- return /* @__PURE__ */ React6.createElement(Component, __spreadProps(__spreadValues({
341
+ return /* @__PURE__ */ React7.createElement(Component, __spreadProps(__spreadValues({
295
342
  key: id,
296
343
  "data-wv-type": type,
297
344
  "data-wv-id": id
298
345
  }, rest), {
299
- className: realClassName
300
- }), Array.isArray(childIds) && childIds.map((childId) => /* @__PURE__ */ React6.createElement(RenderItem, {
346
+ className
347
+ }), Array.isArray(childIds) && childIds.map((childId) => /* @__PURE__ */ React7.createElement(RenderItem, {
301
348
  key: childId,
302
- itemId: childId,
303
- context
349
+ itemId: childId
304
350
  })));
305
351
  }
306
352
  return null;
307
353
  };
308
354
  var RenderItem = ({
309
- itemId,
310
- context
355
+ itemId
311
356
  }) => {
357
+ let context = useContext(WeaverseContext);
312
358
  let { itemInstances, elementInstances } = context;
313
359
  let itemInstance = itemInstances.get(itemId);
314
360
  if (itemInstance) {
315
- return /* @__PURE__ */ React6.createElement(Item, {
361
+ return /* @__PURE__ */ React7.createElement(Item, {
316
362
  itemInstance,
317
- elementInstances,
318
- context
363
+ elementInstances
319
364
  });
320
365
  }
321
366
  console.warn(`Item instance ${itemId} not found`);
322
- return /* @__PURE__ */ React6.createElement(React6.Fragment, null);
367
+ return /* @__PURE__ */ React7.createElement(React7.Fragment, null);
323
368
  };
324
369
 
325
370
  // src/index.ts
326
371
  export * from "@weaverse/core";
327
372
  export {
373
+ WeaverseContext,
374
+ WeaverseContextConsumer,
375
+ WeaverseContextProvider,
328
376
  WeaverseRoot,
329
377
  createRootContext
330
378
  };
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.6.2",
2
+ "version": "0.6.5",
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.2"
34
+ "@weaverse/core": "0.6.5"
35
35
  }
36
36
  }