@weaverse/react 0.6.3 → 0.6.6
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 +9 -1
- package/dist/index.js +134 -46
- package/dist/index.mjs +132 -50
- package/package.json +2 -2
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
|
-
|
|
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
|
});
|
|
@@ -79,7 +82,15 @@ var base_default = BaseElement;
|
|
|
79
82
|
// src/elements/button.tsx
|
|
80
83
|
var React2 = __toESM(require("react"));
|
|
81
84
|
var Button = React2.forwardRef((props, ref) => {
|
|
82
|
-
const _a = props, { buttonType, css } = _a, rest = __objRest(_a, ["buttonType", "css"]);
|
|
85
|
+
const _a = props, { buttonType, css, openInNewTab = false, target = "" } = _a, rest = __objRest(_a, ["buttonType", "css", "openInNewTab", "target"]);
|
|
86
|
+
if (target) {
|
|
87
|
+
return /* @__PURE__ */ React2.createElement("a", {
|
|
88
|
+
href: target,
|
|
89
|
+
target: openInNewTab ? "_blank" : "_self"
|
|
90
|
+
}, /* @__PURE__ */ React2.createElement("button", __spreadValues({
|
|
91
|
+
ref
|
|
92
|
+
}, rest), props.value));
|
|
93
|
+
}
|
|
83
94
|
return /* @__PURE__ */ React2.createElement("button", __spreadValues({
|
|
84
95
|
ref
|
|
85
96
|
}, rest), props.value);
|
|
@@ -108,7 +119,20 @@ var schema2 = {
|
|
|
108
119
|
}
|
|
109
120
|
],
|
|
110
121
|
settings: [],
|
|
111
|
-
toolbar: [
|
|
122
|
+
toolbar: [
|
|
123
|
+
{
|
|
124
|
+
type: "delete"
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
type: "duplicate"
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
type: "link"
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
type: "color"
|
|
134
|
+
}
|
|
135
|
+
],
|
|
112
136
|
data: {
|
|
113
137
|
css: {
|
|
114
138
|
"@desktop": {
|
|
@@ -116,7 +140,9 @@ var schema2 = {
|
|
|
116
140
|
fontSize: "13px",
|
|
117
141
|
padding: "10px 15px"
|
|
118
142
|
}
|
|
119
|
-
}
|
|
143
|
+
},
|
|
144
|
+
target: "",
|
|
145
|
+
openInNewTab: false
|
|
120
146
|
}
|
|
121
147
|
};
|
|
122
148
|
var button_default = Button;
|
|
@@ -138,7 +164,7 @@ var schema3 = {
|
|
|
138
164
|
backgroundColor: "rgba(248,203,203,0.38)",
|
|
139
165
|
flexDirection: "column",
|
|
140
166
|
alignItems: "flex-start",
|
|
141
|
-
justifyContent: "
|
|
167
|
+
justifyContent: "flex-start",
|
|
142
168
|
textAlign: "left",
|
|
143
169
|
gridArea: "1 / 1 / 3 / 6",
|
|
144
170
|
overflow: "hidden",
|
|
@@ -154,11 +180,20 @@ var container_default = Container;
|
|
|
154
180
|
// src/elements/layout.tsx
|
|
155
181
|
var import_react3 = __toESM(require("react"));
|
|
156
182
|
var Layout = (0, import_react3.forwardRef)((props, ref) => {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
183
|
+
const _a = props, { css, children, rows, gap, rowSize, columns, gridSize } = _a, rest = __objRest(_a, ["css", "children", "rows", "gap", "rowSize", "columns", "gridSize"]);
|
|
184
|
+
return /* @__PURE__ */ import_react3.default.createElement("section", __spreadValues({
|
|
185
|
+
ref,
|
|
186
|
+
style: {
|
|
187
|
+
"--grid-size": gridSize + "px",
|
|
188
|
+
"--rows": rows,
|
|
189
|
+
"--columns": columns,
|
|
190
|
+
"--gap": gap + "px",
|
|
191
|
+
"--row-size": rowSize + "px",
|
|
192
|
+
"--col-size": "calc((var(--grid-size) - calc(var(--columns) - 1) * var(--gap)) / var(--columns))"
|
|
193
|
+
}
|
|
194
|
+
}, rest), /* @__PURE__ */ import_react3.default.createElement("div", {
|
|
195
|
+
"data-layout-content": true
|
|
196
|
+
}, children));
|
|
162
197
|
});
|
|
163
198
|
var schema4 = {
|
|
164
199
|
title: "Layout",
|
|
@@ -166,20 +201,30 @@ var schema4 = {
|
|
|
166
201
|
data: {
|
|
167
202
|
css: {
|
|
168
203
|
"@desktop": {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
204
|
+
overflow: "hidden",
|
|
205
|
+
paddingTop: "16px",
|
|
206
|
+
paddingBottom: "16px",
|
|
207
|
+
paddingLeft: "var(--gap)",
|
|
208
|
+
paddingRight: "var(--gap)",
|
|
209
|
+
"> [data-layout-content]": {
|
|
210
|
+
margin: "0 auto",
|
|
211
|
+
display: "grid !important",
|
|
212
|
+
gridTemplateRows: "repeat(var(--rows), var(--row-size))",
|
|
213
|
+
gridTemplateColumns: "repeat(var(--columns), minmax(0, var(--col-size)))",
|
|
214
|
+
gridGap: "var(--gap)",
|
|
215
|
+
maxWidth: "var(--grid-size)"
|
|
216
|
+
}
|
|
177
217
|
},
|
|
178
218
|
"@mobile": {
|
|
179
219
|
display: "flex !important",
|
|
180
220
|
flexDirection: "column"
|
|
181
221
|
}
|
|
182
|
-
}
|
|
222
|
+
},
|
|
223
|
+
gridSize: 1224,
|
|
224
|
+
rows: 12,
|
|
225
|
+
columns: 12,
|
|
226
|
+
gap: 16,
|
|
227
|
+
rowSize: 48
|
|
183
228
|
},
|
|
184
229
|
settings: []
|
|
185
230
|
};
|
|
@@ -200,7 +245,7 @@ Text.defaultProps = {
|
|
|
200
245
|
};
|
|
201
246
|
var schema5 = {
|
|
202
247
|
type: "text",
|
|
203
|
-
title: "Text
|
|
248
|
+
title: "Text",
|
|
204
249
|
settings: [],
|
|
205
250
|
data: {
|
|
206
251
|
css: {
|
|
@@ -219,6 +264,35 @@ var schema5 = {
|
|
|
219
264
|
};
|
|
220
265
|
var text_default = Text;
|
|
221
266
|
|
|
267
|
+
// src/elements/image.tsx
|
|
268
|
+
var import_react4 = __toESM(require("react"));
|
|
269
|
+
var Image = import_react4.default.forwardRef(function Image2(props, ref) {
|
|
270
|
+
let _a = props, { src, alt, children } = _a, rest = __objRest(_a, ["src", "alt", "children"]);
|
|
271
|
+
return /* @__PURE__ */ import_react4.default.createElement("img", __spreadProps(__spreadValues({
|
|
272
|
+
ref
|
|
273
|
+
}, rest), {
|
|
274
|
+
alt,
|
|
275
|
+
src
|
|
276
|
+
}));
|
|
277
|
+
});
|
|
278
|
+
Image.defaultProps = {
|
|
279
|
+
src: "https://ucarecdn.com/48d73272-3fe3-43f6-8b5b-22b68fc5a8c8/section.png",
|
|
280
|
+
alt: "weaverse image element"
|
|
281
|
+
};
|
|
282
|
+
var schema6 = {
|
|
283
|
+
settings: [],
|
|
284
|
+
type: "image",
|
|
285
|
+
title: "Image",
|
|
286
|
+
data: {
|
|
287
|
+
css: {
|
|
288
|
+
"@desktop": {
|
|
289
|
+
padding: "10px"
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
};
|
|
294
|
+
var image_default = Image;
|
|
295
|
+
|
|
222
296
|
// src/elements/index.ts
|
|
223
297
|
var elements = {
|
|
224
298
|
Button: {
|
|
@@ -240,6 +314,10 @@ var elements = {
|
|
|
240
314
|
Container: {
|
|
241
315
|
Component: container_default,
|
|
242
316
|
schema: schema3
|
|
317
|
+
},
|
|
318
|
+
Image: {
|
|
319
|
+
Component: image_default,
|
|
320
|
+
schema: schema6
|
|
243
321
|
}
|
|
244
322
|
};
|
|
245
323
|
var elements_default = elements;
|
|
@@ -254,7 +332,7 @@ var shortCssObject = (css) => {
|
|
|
254
332
|
|
|
255
333
|
// src/renderer.tsx
|
|
256
334
|
var import_core = require("@weaverse/core");
|
|
257
|
-
var
|
|
335
|
+
var import_react5 = __toESM(require("react"));
|
|
258
336
|
var createRootContext = (configs) => {
|
|
259
337
|
const rootContext = new import_core.Weaverse(configs);
|
|
260
338
|
Object.keys(elements_default).forEach((key) => {
|
|
@@ -262,10 +340,13 @@ var createRootContext = (configs) => {
|
|
|
262
340
|
});
|
|
263
341
|
return rootContext;
|
|
264
342
|
};
|
|
343
|
+
var WeaverseContext = (0, import_react5.createContext)({});
|
|
344
|
+
var WeaverseContextProvider = WeaverseContext.Provider;
|
|
345
|
+
var WeaverseContextConsumer = WeaverseContext.Consumer;
|
|
265
346
|
var WeaverseRoot = ({ context }) => {
|
|
266
347
|
var _a;
|
|
267
|
-
let [, setData] =
|
|
268
|
-
|
|
348
|
+
let [, setData] = (0, import_react5.useState)(context.projectData);
|
|
349
|
+
(0, import_react5.useEffect)(() => {
|
|
269
350
|
let handleUpdate = () => {
|
|
270
351
|
setData({});
|
|
271
352
|
};
|
|
@@ -277,19 +358,21 @@ var WeaverseRoot = ({ context }) => {
|
|
|
277
358
|
context.unsubscribe(handleUpdate);
|
|
278
359
|
};
|
|
279
360
|
}, []);
|
|
280
|
-
let
|
|
361
|
+
let eventHandlers = ((_a = context == null ? void 0 : context.studioBridge) == null ? void 0 : _a.eventHandlers) || {};
|
|
281
362
|
let themeClass = context.stitchesInstance.theme.className;
|
|
282
|
-
return /* @__PURE__ */
|
|
363
|
+
return /* @__PURE__ */ import_react5.default.createElement("div", __spreadValues({
|
|
283
364
|
className: `weaverse-content-root ${themeClass}`
|
|
284
|
-
},
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
365
|
+
}, eventHandlers), /* @__PURE__ */ import_react5.default.createElement(WeaverseContextProvider, {
|
|
366
|
+
value: context
|
|
367
|
+
}, /* @__PURE__ */ import_react5.default.createElement(RenderItem, {
|
|
368
|
+
itemId: context.projectData.rootId || 0
|
|
369
|
+
})));
|
|
288
370
|
};
|
|
289
|
-
var Item = ({ itemInstance, elementInstances
|
|
290
|
-
|
|
291
|
-
let
|
|
292
|
-
|
|
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)(() => {
|
|
293
376
|
let handleUpdate = (update) => {
|
|
294
377
|
setData(__spreadValues({}, update));
|
|
295
378
|
};
|
|
@@ -303,11 +386,15 @@ var Item = ({ itemInstance, elementInstances, context }) => {
|
|
|
303
386
|
itemInstance.unsubscribe(handleUpdate);
|
|
304
387
|
};
|
|
305
388
|
}, []);
|
|
306
|
-
let
|
|
389
|
+
let context = (0, import_react5.useContext)(WeaverseContext);
|
|
390
|
+
let className = "";
|
|
307
391
|
if (css) {
|
|
308
392
|
let formattedCss = shortCssObject(css);
|
|
309
|
-
let
|
|
310
|
-
|
|
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;
|
|
311
398
|
}
|
|
312
399
|
let element = elementInstances.get(type) || elementInstances.get("base");
|
|
313
400
|
if (element == null ? void 0 : element.Component) {
|
|
@@ -315,41 +402,42 @@ var Item = ({ itemInstance, elementInstances, context }) => {
|
|
|
315
402
|
if (Component.$$typeof === Symbol.for("react.forward_ref")) {
|
|
316
403
|
rest.ref = itemInstance.ref;
|
|
317
404
|
}
|
|
318
|
-
return /* @__PURE__ */
|
|
405
|
+
return /* @__PURE__ */ import_react5.default.createElement(Component, __spreadProps(__spreadValues({
|
|
319
406
|
key: id,
|
|
320
407
|
"data-wv-type": type,
|
|
321
408
|
"data-wv-id": id
|
|
322
409
|
}, rest), {
|
|
323
|
-
className
|
|
324
|
-
}), Array.isArray(childIds) && childIds.map((childId) => /* @__PURE__ */
|
|
410
|
+
className
|
|
411
|
+
}), Array.isArray(childIds) && childIds.map((childId) => /* @__PURE__ */ import_react5.default.createElement(RenderItem, {
|
|
325
412
|
key: childId,
|
|
326
|
-
itemId: childId
|
|
327
|
-
context
|
|
413
|
+
itemId: childId
|
|
328
414
|
})));
|
|
329
415
|
}
|
|
330
416
|
return null;
|
|
331
417
|
};
|
|
332
418
|
var RenderItem = ({
|
|
333
|
-
itemId
|
|
334
|
-
context
|
|
419
|
+
itemId
|
|
335
420
|
}) => {
|
|
421
|
+
let context = (0, import_react5.useContext)(WeaverseContext);
|
|
336
422
|
let { itemInstances, elementInstances } = context;
|
|
337
423
|
let itemInstance = itemInstances.get(itemId);
|
|
338
424
|
if (itemInstance) {
|
|
339
|
-
return /* @__PURE__ */
|
|
425
|
+
return /* @__PURE__ */ import_react5.default.createElement(Item, {
|
|
340
426
|
itemInstance,
|
|
341
|
-
elementInstances
|
|
342
|
-
context
|
|
427
|
+
elementInstances
|
|
343
428
|
});
|
|
344
429
|
}
|
|
345
430
|
console.warn(`Item instance ${itemId} not found`);
|
|
346
|
-
return /* @__PURE__ */
|
|
431
|
+
return /* @__PURE__ */ import_react5.default.createElement(import_react5.default.Fragment, null);
|
|
347
432
|
};
|
|
348
433
|
|
|
349
434
|
// src/index.ts
|
|
350
435
|
__reExport(src_exports, require("@weaverse/core"), module.exports);
|
|
351
436
|
// Annotate the CommonJS export names for ESM import in node:
|
|
352
437
|
0 && (module.exports = {
|
|
438
|
+
WeaverseContext,
|
|
439
|
+
WeaverseContextConsumer,
|
|
440
|
+
WeaverseContextProvider,
|
|
353
441
|
WeaverseRoot,
|
|
354
442
|
createRootContext
|
|
355
443
|
});
|
package/dist/index.mjs
CHANGED
|
@@ -52,7 +52,15 @@ var base_default = BaseElement;
|
|
|
52
52
|
// src/elements/button.tsx
|
|
53
53
|
import * as React2 from "react";
|
|
54
54
|
var Button = React2.forwardRef((props, ref) => {
|
|
55
|
-
const _a = props, { buttonType, css } = _a, rest = __objRest(_a, ["buttonType", "css"]);
|
|
55
|
+
const _a = props, { buttonType, css, openInNewTab = false, target = "" } = _a, rest = __objRest(_a, ["buttonType", "css", "openInNewTab", "target"]);
|
|
56
|
+
if (target) {
|
|
57
|
+
return /* @__PURE__ */ React2.createElement("a", {
|
|
58
|
+
href: target,
|
|
59
|
+
target: openInNewTab ? "_blank" : "_self"
|
|
60
|
+
}, /* @__PURE__ */ React2.createElement("button", __spreadValues({
|
|
61
|
+
ref
|
|
62
|
+
}, rest), props.value));
|
|
63
|
+
}
|
|
56
64
|
return /* @__PURE__ */ React2.createElement("button", __spreadValues({
|
|
57
65
|
ref
|
|
58
66
|
}, rest), props.value);
|
|
@@ -81,7 +89,20 @@ var schema2 = {
|
|
|
81
89
|
}
|
|
82
90
|
],
|
|
83
91
|
settings: [],
|
|
84
|
-
toolbar: [
|
|
92
|
+
toolbar: [
|
|
93
|
+
{
|
|
94
|
+
type: "delete"
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
type: "duplicate"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
type: "link"
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
type: "color"
|
|
104
|
+
}
|
|
105
|
+
],
|
|
85
106
|
data: {
|
|
86
107
|
css: {
|
|
87
108
|
"@desktop": {
|
|
@@ -89,7 +110,9 @@ var schema2 = {
|
|
|
89
110
|
fontSize: "13px",
|
|
90
111
|
padding: "10px 15px"
|
|
91
112
|
}
|
|
92
|
-
}
|
|
113
|
+
},
|
|
114
|
+
target: "",
|
|
115
|
+
openInNewTab: false
|
|
93
116
|
}
|
|
94
117
|
};
|
|
95
118
|
var button_default = Button;
|
|
@@ -111,7 +134,7 @@ var schema3 = {
|
|
|
111
134
|
backgroundColor: "rgba(248,203,203,0.38)",
|
|
112
135
|
flexDirection: "column",
|
|
113
136
|
alignItems: "flex-start",
|
|
114
|
-
justifyContent: "
|
|
137
|
+
justifyContent: "flex-start",
|
|
115
138
|
textAlign: "left",
|
|
116
139
|
gridArea: "1 / 1 / 3 / 6",
|
|
117
140
|
overflow: "hidden",
|
|
@@ -127,11 +150,20 @@ var container_default = Container;
|
|
|
127
150
|
// src/elements/layout.tsx
|
|
128
151
|
import React4, { forwardRef as forwardRef3 } from "react";
|
|
129
152
|
var Layout = forwardRef3((props, ref) => {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
153
|
+
const _a = props, { css, children, rows, gap, rowSize, columns, gridSize } = _a, rest = __objRest(_a, ["css", "children", "rows", "gap", "rowSize", "columns", "gridSize"]);
|
|
154
|
+
return /* @__PURE__ */ React4.createElement("section", __spreadValues({
|
|
155
|
+
ref,
|
|
156
|
+
style: {
|
|
157
|
+
"--grid-size": gridSize + "px",
|
|
158
|
+
"--rows": rows,
|
|
159
|
+
"--columns": columns,
|
|
160
|
+
"--gap": gap + "px",
|
|
161
|
+
"--row-size": rowSize + "px",
|
|
162
|
+
"--col-size": "calc((var(--grid-size) - calc(var(--columns) - 1) * var(--gap)) / var(--columns))"
|
|
163
|
+
}
|
|
164
|
+
}, rest), /* @__PURE__ */ React4.createElement("div", {
|
|
165
|
+
"data-layout-content": true
|
|
166
|
+
}, children));
|
|
135
167
|
});
|
|
136
168
|
var schema4 = {
|
|
137
169
|
title: "Layout",
|
|
@@ -139,20 +171,30 @@ var schema4 = {
|
|
|
139
171
|
data: {
|
|
140
172
|
css: {
|
|
141
173
|
"@desktop": {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
174
|
+
overflow: "hidden",
|
|
175
|
+
paddingTop: "16px",
|
|
176
|
+
paddingBottom: "16px",
|
|
177
|
+
paddingLeft: "var(--gap)",
|
|
178
|
+
paddingRight: "var(--gap)",
|
|
179
|
+
"> [data-layout-content]": {
|
|
180
|
+
margin: "0 auto",
|
|
181
|
+
display: "grid !important",
|
|
182
|
+
gridTemplateRows: "repeat(var(--rows), var(--row-size))",
|
|
183
|
+
gridTemplateColumns: "repeat(var(--columns), minmax(0, var(--col-size)))",
|
|
184
|
+
gridGap: "var(--gap)",
|
|
185
|
+
maxWidth: "var(--grid-size)"
|
|
186
|
+
}
|
|
150
187
|
},
|
|
151
188
|
"@mobile": {
|
|
152
189
|
display: "flex !important",
|
|
153
190
|
flexDirection: "column"
|
|
154
191
|
}
|
|
155
|
-
}
|
|
192
|
+
},
|
|
193
|
+
gridSize: 1224,
|
|
194
|
+
rows: 12,
|
|
195
|
+
columns: 12,
|
|
196
|
+
gap: 16,
|
|
197
|
+
rowSize: 48
|
|
156
198
|
},
|
|
157
199
|
settings: []
|
|
158
200
|
};
|
|
@@ -173,7 +215,7 @@ Text.defaultProps = {
|
|
|
173
215
|
};
|
|
174
216
|
var schema5 = {
|
|
175
217
|
type: "text",
|
|
176
|
-
title: "Text
|
|
218
|
+
title: "Text",
|
|
177
219
|
settings: [],
|
|
178
220
|
data: {
|
|
179
221
|
css: {
|
|
@@ -192,6 +234,35 @@ var schema5 = {
|
|
|
192
234
|
};
|
|
193
235
|
var text_default = Text;
|
|
194
236
|
|
|
237
|
+
// src/elements/image.tsx
|
|
238
|
+
import React6 from "react";
|
|
239
|
+
var Image = React6.forwardRef(function Image2(props, ref) {
|
|
240
|
+
let _a = props, { src, alt, children } = _a, rest = __objRest(_a, ["src", "alt", "children"]);
|
|
241
|
+
return /* @__PURE__ */ React6.createElement("img", __spreadProps(__spreadValues({
|
|
242
|
+
ref
|
|
243
|
+
}, rest), {
|
|
244
|
+
alt,
|
|
245
|
+
src
|
|
246
|
+
}));
|
|
247
|
+
});
|
|
248
|
+
Image.defaultProps = {
|
|
249
|
+
src: "https://ucarecdn.com/48d73272-3fe3-43f6-8b5b-22b68fc5a8c8/section.png",
|
|
250
|
+
alt: "weaverse image element"
|
|
251
|
+
};
|
|
252
|
+
var schema6 = {
|
|
253
|
+
settings: [],
|
|
254
|
+
type: "image",
|
|
255
|
+
title: "Image",
|
|
256
|
+
data: {
|
|
257
|
+
css: {
|
|
258
|
+
"@desktop": {
|
|
259
|
+
padding: "10px"
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
};
|
|
264
|
+
var image_default = Image;
|
|
265
|
+
|
|
195
266
|
// src/elements/index.ts
|
|
196
267
|
var elements = {
|
|
197
268
|
Button: {
|
|
@@ -213,6 +284,10 @@ var elements = {
|
|
|
213
284
|
Container: {
|
|
214
285
|
Component: container_default,
|
|
215
286
|
schema: schema3
|
|
287
|
+
},
|
|
288
|
+
Image: {
|
|
289
|
+
Component: image_default,
|
|
290
|
+
schema: schema6
|
|
216
291
|
}
|
|
217
292
|
};
|
|
218
293
|
var elements_default = elements;
|
|
@@ -226,11 +301,8 @@ var shortCssObject = (css) => {
|
|
|
226
301
|
};
|
|
227
302
|
|
|
228
303
|
// src/renderer.tsx
|
|
229
|
-
import {
|
|
230
|
-
|
|
231
|
-
Weaverse
|
|
232
|
-
} from "@weaverse/core";
|
|
233
|
-
import * as React6 from "react";
|
|
304
|
+
import { isBrowser, Weaverse } from "@weaverse/core";
|
|
305
|
+
import React7, { createContext, useContext, useEffect, useState } from "react";
|
|
234
306
|
var createRootContext = (configs) => {
|
|
235
307
|
const rootContext = new Weaverse(configs);
|
|
236
308
|
Object.keys(elements_default).forEach((key) => {
|
|
@@ -238,10 +310,13 @@ var createRootContext = (configs) => {
|
|
|
238
310
|
});
|
|
239
311
|
return rootContext;
|
|
240
312
|
};
|
|
313
|
+
var WeaverseContext = createContext({});
|
|
314
|
+
var WeaverseContextProvider = WeaverseContext.Provider;
|
|
315
|
+
var WeaverseContextConsumer = WeaverseContext.Consumer;
|
|
241
316
|
var WeaverseRoot = ({ context }) => {
|
|
242
317
|
var _a;
|
|
243
|
-
let [, setData] =
|
|
244
|
-
|
|
318
|
+
let [, setData] = useState(context.projectData);
|
|
319
|
+
useEffect(() => {
|
|
245
320
|
let handleUpdate = () => {
|
|
246
321
|
setData({});
|
|
247
322
|
};
|
|
@@ -253,19 +328,21 @@ var WeaverseRoot = ({ context }) => {
|
|
|
253
328
|
context.unsubscribe(handleUpdate);
|
|
254
329
|
};
|
|
255
330
|
}, []);
|
|
256
|
-
let
|
|
331
|
+
let eventHandlers = ((_a = context == null ? void 0 : context.studioBridge) == null ? void 0 : _a.eventHandlers) || {};
|
|
257
332
|
let themeClass = context.stitchesInstance.theme.className;
|
|
258
|
-
return /* @__PURE__ */
|
|
333
|
+
return /* @__PURE__ */ React7.createElement("div", __spreadValues({
|
|
259
334
|
className: `weaverse-content-root ${themeClass}`
|
|
260
|
-
},
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
335
|
+
}, eventHandlers), /* @__PURE__ */ React7.createElement(WeaverseContextProvider, {
|
|
336
|
+
value: context
|
|
337
|
+
}, /* @__PURE__ */ React7.createElement(RenderItem, {
|
|
338
|
+
itemId: context.projectData.rootId || 0
|
|
339
|
+
})));
|
|
264
340
|
};
|
|
265
|
-
var Item = ({ itemInstance, elementInstances
|
|
266
|
-
|
|
267
|
-
let
|
|
268
|
-
|
|
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"]);
|
|
345
|
+
useEffect(() => {
|
|
269
346
|
let handleUpdate = (update) => {
|
|
270
347
|
setData(__spreadValues({}, update));
|
|
271
348
|
};
|
|
@@ -279,11 +356,15 @@ var Item = ({ itemInstance, elementInstances, context }) => {
|
|
|
279
356
|
itemInstance.unsubscribe(handleUpdate);
|
|
280
357
|
};
|
|
281
358
|
}, []);
|
|
282
|
-
let
|
|
359
|
+
let context = useContext(WeaverseContext);
|
|
360
|
+
let className = "";
|
|
283
361
|
if (css) {
|
|
284
362
|
let formattedCss = shortCssObject(css);
|
|
285
|
-
let
|
|
286
|
-
|
|
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;
|
|
287
368
|
}
|
|
288
369
|
let element = elementInstances.get(type) || elementInstances.get("base");
|
|
289
370
|
if (element == null ? void 0 : element.Component) {
|
|
@@ -291,40 +372,41 @@ var Item = ({ itemInstance, elementInstances, context }) => {
|
|
|
291
372
|
if (Component.$$typeof === Symbol.for("react.forward_ref")) {
|
|
292
373
|
rest.ref = itemInstance.ref;
|
|
293
374
|
}
|
|
294
|
-
return /* @__PURE__ */
|
|
375
|
+
return /* @__PURE__ */ React7.createElement(Component, __spreadProps(__spreadValues({
|
|
295
376
|
key: id,
|
|
296
377
|
"data-wv-type": type,
|
|
297
378
|
"data-wv-id": id
|
|
298
379
|
}, rest), {
|
|
299
|
-
className
|
|
300
|
-
}), Array.isArray(childIds) && childIds.map((childId) => /* @__PURE__ */
|
|
380
|
+
className
|
|
381
|
+
}), Array.isArray(childIds) && childIds.map((childId) => /* @__PURE__ */ React7.createElement(RenderItem, {
|
|
301
382
|
key: childId,
|
|
302
|
-
itemId: childId
|
|
303
|
-
context
|
|
383
|
+
itemId: childId
|
|
304
384
|
})));
|
|
305
385
|
}
|
|
306
386
|
return null;
|
|
307
387
|
};
|
|
308
388
|
var RenderItem = ({
|
|
309
|
-
itemId
|
|
310
|
-
context
|
|
389
|
+
itemId
|
|
311
390
|
}) => {
|
|
391
|
+
let context = useContext(WeaverseContext);
|
|
312
392
|
let { itemInstances, elementInstances } = context;
|
|
313
393
|
let itemInstance = itemInstances.get(itemId);
|
|
314
394
|
if (itemInstance) {
|
|
315
|
-
return /* @__PURE__ */
|
|
395
|
+
return /* @__PURE__ */ React7.createElement(Item, {
|
|
316
396
|
itemInstance,
|
|
317
|
-
elementInstances
|
|
318
|
-
context
|
|
397
|
+
elementInstances
|
|
319
398
|
});
|
|
320
399
|
}
|
|
321
400
|
console.warn(`Item instance ${itemId} not found`);
|
|
322
|
-
return /* @__PURE__ */
|
|
401
|
+
return /* @__PURE__ */ React7.createElement(React7.Fragment, null);
|
|
323
402
|
};
|
|
324
403
|
|
|
325
404
|
// src/index.ts
|
|
326
405
|
export * from "@weaverse/core";
|
|
327
406
|
export {
|
|
407
|
+
WeaverseContext,
|
|
408
|
+
WeaverseContextConsumer,
|
|
409
|
+
WeaverseContextProvider,
|
|
328
410
|
WeaverseRoot,
|
|
329
411
|
createRootContext
|
|
330
412
|
};
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.6.
|
|
2
|
+
"version": "0.6.6",
|
|
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.
|
|
34
|
+
"@weaverse/core": "0.6.6"
|
|
35
35
|
}
|
|
36
36
|
}
|