@weaverse/react 0.1.7 → 0.1.8
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/elements/base.d.ts +2 -1
- package/dist/elements/button.d.ts +2 -16
- package/dist/elements/grid.d.ts +9 -0
- package/dist/elements/index.d.ts +5 -17
- package/dist/index.d.ts +2 -1
- package/dist/sdk-react.cjs.development.js +75 -227
- package/dist/sdk-react.cjs.development.js.map +1 -1
- package/dist/sdk-react.cjs.production.min.js +1 -1
- package/dist/sdk-react.cjs.production.min.js.map +1 -1
- package/dist/sdk-react.esm.js +76 -228
- package/dist/sdk-react.esm.js.map +1 -1
- package/package.json +12 -11
- package/dist/core.d.ts +0 -46
- package/dist/utils/index.d.ts +0 -3
- package/src/core.ts +0 -274
- package/src/elements/base.tsx +0 -12
- package/src/elements/button.tsx +0 -22
- package/src/elements/index.ts +0 -8
- package/src/index.tsx +0 -78
- package/src/types.d.ts +0 -13
- package/src/utils/index.ts +0 -3
- package/src/utils/toHash.js +0 -23
package/dist/elements/base.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
export declare const BaseElement: {
|
|
3
3
|
({ tag, children, ...props }: any): React.DetailedReactHTMLElement<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>;
|
|
4
|
-
|
|
4
|
+
defaultProps: {
|
|
5
5
|
type: string;
|
|
6
|
+
tag: string;
|
|
6
7
|
};
|
|
7
8
|
};
|
|
8
9
|
export default BaseElement;
|
|
@@ -1,17 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
defaultProps: {
|
|
4
|
-
style: {
|
|
5
|
-
backgroundColor: string;
|
|
6
|
-
borderRadius: string;
|
|
7
|
-
fontSize: string;
|
|
8
|
-
padding: string;
|
|
9
|
-
};
|
|
10
|
-
type: string;
|
|
11
|
-
tag: string;
|
|
12
|
-
};
|
|
13
|
-
configs: {
|
|
14
|
-
type: string;
|
|
15
|
-
};
|
|
16
|
-
};
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export declare const Button: React.ForwardRefExoticComponent<Pick<any, string | number | symbol> & React.RefAttributes<unknown>>;
|
|
17
3
|
export default Button;
|
package/dist/elements/index.d.ts
CHANGED
|
@@ -1,26 +1,14 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
+
import Grid from './grid';
|
|
2
3
|
declare const elements: {
|
|
3
|
-
Button:
|
|
4
|
-
(props: any): JSX.Element;
|
|
5
|
-
defaultProps: {
|
|
6
|
-
style: {
|
|
7
|
-
backgroundColor: string;
|
|
8
|
-
borderRadius: string;
|
|
9
|
-
fontSize: string;
|
|
10
|
-
padding: string;
|
|
11
|
-
};
|
|
12
|
-
type: string;
|
|
13
|
-
tag: string;
|
|
14
|
-
};
|
|
15
|
-
configs: {
|
|
16
|
-
type: string;
|
|
17
|
-
};
|
|
18
|
-
};
|
|
4
|
+
Button: import("react").ForwardRefExoticComponent<Pick<any, string | number | symbol> & import("react").RefAttributes<unknown>>;
|
|
19
5
|
BaseElement: {
|
|
20
6
|
({ tag, children, ...props }: any): import("react").DetailedReactHTMLElement<import("react").InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>;
|
|
21
|
-
|
|
7
|
+
defaultProps: {
|
|
22
8
|
type: string;
|
|
9
|
+
tag: string;
|
|
23
10
|
};
|
|
24
11
|
};
|
|
12
|
+
Grid: typeof Grid;
|
|
25
13
|
};
|
|
26
14
|
export default elements;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { Weaverse, WeaverseType } from '@weaverse/core';
|
|
2
3
|
declare const createRootContext: (configs: WeaverseType) => Weaverse;
|
|
3
4
|
declare const WeaverseRoot: ({ context, defaultData }: {
|
|
4
5
|
context: Weaverse;
|
|
@@ -6,7 +6,7 @@ function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'defau
|
|
|
6
6
|
|
|
7
7
|
var React = require('react');
|
|
8
8
|
var React__default = _interopDefault(React);
|
|
9
|
-
var
|
|
9
|
+
var core = require('@weaverse/core');
|
|
10
10
|
|
|
11
11
|
function _extends() {
|
|
12
12
|
_extends = Object.assign || function (target) {
|
|
@@ -41,214 +41,19 @@ function _objectWithoutPropertiesLoose(source, excluded) {
|
|
|
41
41
|
return target;
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
var
|
|
45
|
-
var isBrowser = typeof window !== 'undefined' && !isReactNative;
|
|
46
|
-
|
|
47
|
-
// TODO: Implement Weaverse SDK class
|
|
48
|
-
var Weaverse = /*#__PURE__*/function () {
|
|
49
|
-
function Weaverse(_temp) {
|
|
50
|
-
var _this = this;
|
|
51
|
-
|
|
52
|
-
var _ref = _temp === void 0 ? {} : _temp,
|
|
53
|
-
appUrl = _ref.appUrl,
|
|
54
|
-
projectKey = _ref.projectKey,
|
|
55
|
-
projectData = _ref.projectData;
|
|
56
|
-
|
|
57
|
-
this.elementInstances = new Map();
|
|
58
|
-
this.itemInstances = new Map();
|
|
59
|
-
this.appUrl = 'http://localhost:3000' ;
|
|
60
|
-
this.projectKey = '';
|
|
61
|
-
this.projectData = {
|
|
62
|
-
items: []
|
|
63
|
-
};
|
|
64
|
-
this.listeners = new Set();
|
|
65
|
-
this.isEditor = false;
|
|
66
|
-
|
|
67
|
-
this.handleMessageEvent = function (e) {
|
|
68
|
-
var _e$data, _e$data$type;
|
|
69
|
-
|
|
70
|
-
if ((_e$data = e.data) != null && (_e$data$type = _e$data.type) != null && _e$data$type.startsWith('weaverse.')) {
|
|
71
|
-
var type = e.data.type;
|
|
72
|
-
|
|
73
|
-
switch (type) {
|
|
74
|
-
case 'weaverse.editor.ready':
|
|
75
|
-
_this.isEditor = true;
|
|
76
|
-
break;
|
|
77
|
-
|
|
78
|
-
case 'weaverse.editor.update':
|
|
79
|
-
var payload = e.data.payload;
|
|
80
|
-
var itemId = payload.itemId,
|
|
81
|
-
background = payload.background;
|
|
82
|
-
|
|
83
|
-
var instance = _this.itemInstances.get(itemId);
|
|
84
|
-
|
|
85
|
-
if (instance) {
|
|
86
|
-
instance.setData({
|
|
87
|
-
style: {
|
|
88
|
-
background: background
|
|
89
|
-
}
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
|
|
97
|
-
this.appUrl = appUrl || this.appUrl;
|
|
98
|
-
this.projectKey = projectKey || this.projectKey;
|
|
99
|
-
projectData && (this.projectData = projectData);
|
|
100
|
-
this.init();
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
var _proto = Weaverse.prototype;
|
|
104
|
-
|
|
105
|
-
_proto.registerElement = function registerElement(name, element) {
|
|
106
|
-
this.elementInstances.set(name, element);
|
|
107
|
-
};
|
|
108
|
-
|
|
109
|
-
_proto.init = function init() {
|
|
110
|
-
this.subscribeMessageEvent();
|
|
111
|
-
};
|
|
112
|
-
|
|
113
|
-
_proto.subscribe = function subscribe(fn) {
|
|
114
|
-
this.listeners.add(fn);
|
|
115
|
-
};
|
|
116
|
-
|
|
117
|
-
_proto.unsubscribe = function unsubscribe(fn) {
|
|
118
|
-
this.listeners["delete"](fn);
|
|
119
|
-
};
|
|
120
|
-
|
|
121
|
-
_proto.triggerUpdate = function triggerUpdate() {
|
|
122
|
-
this.listeners.forEach(function (fn) {
|
|
123
|
-
return fn();
|
|
124
|
-
});
|
|
125
|
-
this.triggerEditorUpdate();
|
|
126
|
-
};
|
|
127
|
-
|
|
128
|
-
_proto.fetchProjectData = function fetchProjectData() {
|
|
129
|
-
return fetch(this.appUrl + ("/api/public/" + this.projectKey)).then(function (r) {
|
|
130
|
-
return r.json();
|
|
131
|
-
});
|
|
132
|
-
};
|
|
133
|
-
|
|
134
|
-
_proto.updateProjectData = function updateProjectData() {
|
|
135
|
-
var _this2 = this;
|
|
136
|
-
|
|
137
|
-
if (this.projectKey) {
|
|
138
|
-
this.fetchProjectData().then(function (data) {
|
|
139
|
-
if (data) {
|
|
140
|
-
_this2.projectData = data;
|
|
141
|
-
|
|
142
|
-
_this2.initItemData();
|
|
143
|
-
|
|
144
|
-
_this2.triggerUpdate();
|
|
145
|
-
}
|
|
146
|
-
})["catch"](function (err) {
|
|
147
|
-
console.error(err);
|
|
148
|
-
});
|
|
149
|
-
}
|
|
150
|
-
};
|
|
151
|
-
|
|
152
|
-
_proto.subscribeMessageEvent = function subscribeMessageEvent() {
|
|
153
|
-
var _this3 = this;
|
|
154
|
-
|
|
155
|
-
if (typeof this.currentFrameSubscription === 'function') {
|
|
156
|
-
this.currentFrameSubscription();
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
isBrowser && window.addEventListener('message', this.handleMessageEvent);
|
|
160
|
-
|
|
161
|
-
this.currentFrameSubscription = function () {
|
|
162
|
-
isBrowser && window.removeEventListener('message', _this3.handleMessageEvent);
|
|
163
|
-
};
|
|
164
|
-
|
|
165
|
-
return this.currentFrameSubscription;
|
|
166
|
-
};
|
|
167
|
-
|
|
168
|
-
_proto.triggerEditorUpdate = function triggerEditorUpdate(type) {
|
|
169
|
-
if (type === void 0) {
|
|
170
|
-
type = 'weaverse.workspace.init';
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
if (this.isEditor) {
|
|
174
|
-
var _window$top;
|
|
175
|
-
|
|
176
|
-
(_window$top = window.top) == null ? void 0 : _window$top.postMessage({
|
|
177
|
-
type: type,
|
|
178
|
-
payload: {
|
|
179
|
-
projectKey: this.projectKey,
|
|
180
|
-
projectData: this.projectData
|
|
181
|
-
}
|
|
182
|
-
}, '*');
|
|
183
|
-
}
|
|
184
|
-
};
|
|
185
|
-
|
|
186
|
-
_proto.initItemData = function initItemData() {
|
|
187
|
-
var _this4 = this;
|
|
188
|
-
|
|
189
|
-
var data = this.projectData;
|
|
190
|
-
|
|
191
|
-
if (data.items) {
|
|
192
|
-
data.items.forEach(function (item) {
|
|
193
|
-
var itemStore = _this4.itemInstances.get(item.id) || new WeaverseItemStore(item, _this4);
|
|
194
|
-
|
|
195
|
-
_this4.itemInstances.set(item.id, itemStore);
|
|
196
|
-
});
|
|
197
|
-
}
|
|
198
|
-
};
|
|
199
|
-
|
|
200
|
-
return Weaverse;
|
|
201
|
-
}();
|
|
202
|
-
var WeaverseItemStore = function WeaverseItemStore(itemData, weaverse) {
|
|
203
|
-
var _this5 = this;
|
|
204
|
-
|
|
205
|
-
if (itemData === void 0) {
|
|
206
|
-
itemData = {};
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
this.data = {};
|
|
210
|
-
this.listeners = new Set();
|
|
211
|
-
|
|
212
|
-
this.setData = function (data) {
|
|
213
|
-
_this5.data = Object.assign(_this5.data, data);
|
|
214
|
-
|
|
215
|
-
_this5.triggerUpdate();
|
|
216
|
-
};
|
|
217
|
-
|
|
218
|
-
this.subscribe = function (fn) {
|
|
219
|
-
_this5.listeners.add(fn);
|
|
220
|
-
};
|
|
221
|
-
|
|
222
|
-
this.unsubscribe = function (fn) {
|
|
223
|
-
_this5.listeners["delete"](fn);
|
|
224
|
-
};
|
|
225
|
-
|
|
226
|
-
this.triggerUpdate = function () {
|
|
227
|
-
_this5.listeners.forEach(function (fn) {
|
|
228
|
-
return fn(_this5.data);
|
|
229
|
-
});
|
|
230
|
-
};
|
|
231
|
-
|
|
232
|
-
this.data = itemData;
|
|
233
|
-
var _itemData = itemData,
|
|
234
|
-
type = _itemData.type;
|
|
235
|
-
|
|
236
|
-
if (type) {
|
|
237
|
-
this.Component = weaverse.elementInstances.get(type);
|
|
238
|
-
}
|
|
239
|
-
};
|
|
240
|
-
|
|
241
|
-
var Button = function Button(props) {
|
|
44
|
+
var Button = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
242
45
|
var _React$useState = React.useState(0),
|
|
243
46
|
count = _React$useState[0],
|
|
244
47
|
setCount = _React$useState[1];
|
|
245
48
|
|
|
246
|
-
return React.createElement("button", Object.assign({
|
|
49
|
+
return React.createElement("button", Object.assign({
|
|
50
|
+
ref: ref
|
|
51
|
+
}, props, {
|
|
247
52
|
onClick: function onClick() {
|
|
248
53
|
return setCount(count + 1);
|
|
249
54
|
}
|
|
250
55
|
}), "Test Button ", count);
|
|
251
|
-
};
|
|
56
|
+
});
|
|
252
57
|
Button.defaultProps = {
|
|
253
58
|
style: {
|
|
254
59
|
backgroundColor: 'green',
|
|
@@ -259,57 +64,73 @@ Button.defaultProps = {
|
|
|
259
64
|
type: 'button',
|
|
260
65
|
tag: 'button'
|
|
261
66
|
};
|
|
262
|
-
Button.configs = {
|
|
263
|
-
type: 'button'
|
|
264
|
-
};
|
|
265
67
|
|
|
266
68
|
var _excluded = ["tag", "children"];
|
|
267
69
|
var BaseElement = function BaseElement(_ref) {
|
|
268
|
-
var
|
|
269
|
-
tag = _ref$tag === void 0 ? 'div' : _ref$tag,
|
|
70
|
+
var tag = _ref.tag,
|
|
270
71
|
children = _ref.children,
|
|
271
72
|
props = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
272
73
|
|
|
273
74
|
return React__default.createElement(tag, _extends({}, props), children);
|
|
274
75
|
};
|
|
275
|
-
BaseElement.
|
|
276
|
-
type: 'base'
|
|
76
|
+
BaseElement.defaultProps = {
|
|
77
|
+
type: 'base',
|
|
78
|
+
tag: 'div'
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
function Grid(props) {
|
|
82
|
+
return React__default.createElement("div", Object.assign({}, props));
|
|
83
|
+
}
|
|
84
|
+
Grid.defaultProps = {
|
|
85
|
+
style: {// display: 'grid',
|
|
86
|
+
// outline: '1px solid red',
|
|
87
|
+
},
|
|
88
|
+
type: 'grid'
|
|
277
89
|
};
|
|
278
90
|
|
|
279
91
|
var elements = {
|
|
280
92
|
Button: Button,
|
|
281
|
-
BaseElement: BaseElement
|
|
93
|
+
BaseElement: BaseElement,
|
|
94
|
+
Grid: Grid
|
|
282
95
|
};
|
|
283
96
|
|
|
284
|
-
var _excluded$1 = ["id", "type", "childIds"];
|
|
97
|
+
var _excluded$1 = ["id", "type", "childIds", "css", "className"];
|
|
285
98
|
|
|
286
99
|
var createRootContext = function createRootContext(configs) {
|
|
287
|
-
var rootContext = new Weaverse(configs);
|
|
100
|
+
var rootContext = new core.Weaverse(configs); // Register the element components
|
|
101
|
+
|
|
288
102
|
Object.keys(elements).forEach(function (key) {
|
|
289
|
-
var _Elements$key, _Elements$key$
|
|
103
|
+
var _Elements$key, _Elements$key$default;
|
|
290
104
|
|
|
291
105
|
// @ts-ignore
|
|
292
|
-
((_Elements$key = elements[key]) == null ? void 0 : (_Elements$key$
|
|
106
|
+
((_Elements$key = elements[key]) == null ? void 0 : (_Elements$key$default = _Elements$key.defaultProps) == null ? void 0 : _Elements$key$default.type) && rootContext.registerElement(elements[key].defaultProps.type, elements[key]);
|
|
293
107
|
});
|
|
294
108
|
return rootContext;
|
|
295
109
|
};
|
|
296
110
|
|
|
297
111
|
var WeaverseRoot = function WeaverseRoot(_ref) {
|
|
298
|
-
var _context$projectData, _context$projectData
|
|
112
|
+
var _context$projectData, _context$projectData$, _context$studioBridge;
|
|
299
113
|
|
|
300
114
|
var context = _ref.context,
|
|
301
115
|
defaultData = _ref.defaultData;
|
|
302
116
|
|
|
303
|
-
var
|
|
304
|
-
setData =
|
|
117
|
+
var _useState = React.useState(context.projectData),
|
|
118
|
+
setData = _useState[1];
|
|
305
119
|
|
|
306
120
|
React.useEffect(function () {
|
|
307
121
|
var handleUpdate = function handleUpdate() {
|
|
308
|
-
setData(context.projectData);
|
|
122
|
+
setData(_extends({}, context.projectData));
|
|
309
123
|
};
|
|
310
124
|
|
|
311
125
|
context.subscribe(handleUpdate);
|
|
312
126
|
context.updateProjectData();
|
|
127
|
+
var shouldRenderStudio = context.loadStudio();
|
|
128
|
+
console.log('shouldRenderStudio', shouldRenderStudio);
|
|
129
|
+
|
|
130
|
+
if (shouldRenderStudio) {
|
|
131
|
+
handleUpdate();
|
|
132
|
+
}
|
|
133
|
+
|
|
313
134
|
return function () {
|
|
314
135
|
context.unsubscribe(handleUpdate);
|
|
315
136
|
};
|
|
@@ -320,10 +141,12 @@ var WeaverseRoot = function WeaverseRoot(_ref) {
|
|
|
320
141
|
context.initItemData();
|
|
321
142
|
}
|
|
322
143
|
|
|
323
|
-
|
|
144
|
+
var handleProps = (context == null ? void 0 : (_context$studioBridge = context.studioBridge) == null ? void 0 : _context$studioBridge.handleProps) || {};
|
|
145
|
+
console.log('handleProps', handleProps);
|
|
146
|
+
return React__default.createElement("div", Object.assign({}, handleProps), React__default.createElement(RenderItem, {
|
|
324
147
|
itemId: 0,
|
|
325
148
|
context: context
|
|
326
|
-
});
|
|
149
|
+
}));
|
|
327
150
|
};
|
|
328
151
|
|
|
329
152
|
var Item = function Item(_ref2) {
|
|
@@ -331,13 +154,15 @@ var Item = function Item(_ref2) {
|
|
|
331
154
|
elementInstances = _ref2.elementInstances,
|
|
332
155
|
context = _ref2.context;
|
|
333
156
|
|
|
334
|
-
var
|
|
335
|
-
data =
|
|
336
|
-
setData =
|
|
157
|
+
var _useState2 = React.useState(itemInstance.data),
|
|
158
|
+
data = _useState2[0],
|
|
159
|
+
setData = _useState2[1];
|
|
337
160
|
|
|
338
161
|
var id = data.id,
|
|
339
162
|
type = data.type,
|
|
340
163
|
childIds = data.childIds,
|
|
164
|
+
css = data.css,
|
|
165
|
+
className = data.className,
|
|
341
166
|
rest = _objectWithoutPropertiesLoose(data, _excluded$1);
|
|
342
167
|
|
|
343
168
|
React.useEffect(function () {
|
|
@@ -346,18 +171,41 @@ var Item = function Item(_ref2) {
|
|
|
346
171
|
};
|
|
347
172
|
|
|
348
173
|
itemInstance.subscribe(handleUpdate);
|
|
174
|
+
|
|
175
|
+
if (!itemInstance.ref.current && core.isBrowser) {
|
|
176
|
+
Object.assign(itemInstance.ref, {
|
|
177
|
+
current: document.querySelector("[data-wv-id=\"" + id + "\"]")
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
|
|
349
181
|
return function () {
|
|
350
182
|
itemInstance.unsubscribe(handleUpdate);
|
|
351
183
|
};
|
|
352
184
|
}, []);
|
|
185
|
+
var realClassName = className || '';
|
|
186
|
+
|
|
187
|
+
if (css) {
|
|
188
|
+
// let stitches create the style from css object and
|
|
189
|
+
// then return the classname, so we can use it in the render
|
|
190
|
+
var selector = context.stitchesInstance.css(css)().className;
|
|
191
|
+
realClassName += ' ' + selector;
|
|
192
|
+
}
|
|
193
|
+
|
|
353
194
|
var Component = elementInstances.get(type);
|
|
354
195
|
|
|
355
196
|
if (Component) {
|
|
356
|
-
|
|
197
|
+
// @ts-ignore
|
|
198
|
+
if (Component.$$typeof === Symbol["for"]('react.forward_ref')) {
|
|
199
|
+
rest.ref = itemInstance.ref;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
return React__default.createElement(Component, Object.assign({
|
|
357
203
|
key: id,
|
|
358
204
|
"data-wv-id": id
|
|
359
|
-
}, rest
|
|
360
|
-
|
|
205
|
+
}, rest, {
|
|
206
|
+
className: realClassName
|
|
207
|
+
}), Array.isArray(childIds) && childIds.map(function (childId) {
|
|
208
|
+
return React__default.createElement(RenderItem, {
|
|
361
209
|
key: childId,
|
|
362
210
|
itemId: childId,
|
|
363
211
|
context: context
|
|
@@ -376,14 +224,14 @@ var RenderItem = function RenderItem(_ref3) {
|
|
|
376
224
|
var itemInstance = itemInstances.get(itemId);
|
|
377
225
|
|
|
378
226
|
if (itemInstance) {
|
|
379
|
-
return
|
|
227
|
+
return React__default.createElement(Item, {
|
|
380
228
|
itemInstance: itemInstance,
|
|
381
229
|
elementInstances: elementInstances,
|
|
382
230
|
context: context
|
|
383
231
|
});
|
|
384
232
|
}
|
|
385
233
|
|
|
386
|
-
return
|
|
234
|
+
return React__default.createElement(React__default.Fragment, null);
|
|
387
235
|
};
|
|
388
236
|
|
|
389
237
|
exports.WeaverseRoot = WeaverseRoot;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-react.cjs.development.js","sources":["../src/utils/index.ts","../src/core.ts","../src/elements/button.tsx","../src/elements/base.tsx","../src/elements/index.ts","../src/index.tsx"],"sourcesContent":["export const isReactNative = typeof navigator === 'object' && navigator.product === 'ReactNative'\nexport const isBrowser = typeof window !== 'undefined' && !isReactNative\nexport const isIframe = isBrowser && window.top !== window.self","// TODO: Implement Weaverse SDK class\nimport fetch from 'isomorphic-unfetch'\nimport {isBrowser} from './utils'\n\n\nexport interface ProjectDataItemType {\n\ttype: string\n\tname: string\n\tid: string | number\n}\n\nexport interface ProjectDataType {\n\titems: ProjectDataItemType[]\n}\n\n// const isSheetAccessible = (sheet: CSSStyleSheet) => {\n// \tif (sheet.href && !sheet.href.startsWith(location.origin)) {\n// \t\treturn false\n// \t}\n//\n// \ttry {\n// \t\tsheet.cssRules\n// \t\treturn true\n// \t} catch (e) {\n// \t\treturn false\n// \t}\n// }\n\n// export class WeaverseStyle {\n// \tpublic styleSheets: StyleSheetList\n// \tpublic document: Document\n//\n// \tconstructor(root: Document) {\n// \t\tthis.document = root\n// \t\tthis.styleSheets = this.document.styleSheets\n// \t}\n//\n// \t// Create styleSheet instance that work both on client and server side\n// \tcreateSheet = (root?: Document) => {\n// \t\tlet sheetInstance: any = null\n//\n// \t\tconst reset = () => {\n// \t\t\tconst sheets = Object(root).styleSheets || []\n// \t\t\t// iterate all stylesheets until a hydratable stylesheet is found\n// \t\t\tfor (const sheet of sheets) {\n// \t\t\t\tif (!isSheetAccessible(sheet)) continue\n//\n// \t\t\t\tfor (let index = 0, rules = sheet.cssRules; rules[index]; ++index) {\n// \t\t\t\t\t// /** @type {CSSStyleRule} Possible indicator rule. */\n// \t\t\t\t\tconst check = Object(rules[index])\n// \t\t\t\t\tif (check.selectorText && check.selectorText.includes('@media')) {\n// \t\t\t\t\t\tif (!sheetInstance) sheetInstance = {sheet, reset, rules: sheet.cssRules}\n// \t\t\t\t\t\tbreak\n// \t\t\t\t\t}\n//\n// \t\t\t\t}\n//\n// \t\t\t\t// if a hydratable stylesheet is found, stop looking\n// \t\t\t\tif (sheetInstance) break\n// \t\t\t}\n// \t\t\t// if no hydratable stylesheet is found\n// \t\t\tif (!sheetInstance) {\n// \t\t\t\tconst createCSSMediaRule = (sourceCssText: string) => {\n// \t\t\t\t\tlet rule: any = {\n// \t\t\t\t\t\tcssRules: [],\n// \t\t\t\t\t\tinsertRule(cssText: string, index: number) {\n// \t\t\t\t\t\t\tthis.cssRules.splice(index, 0, createCSSMediaRule(cssText))\n// \t\t\t\t\t\t},\n// \t\t\t\t\t\tget cssText() {\n// \t\t\t\t\t\t\treturn sourceCssText === '@media{}' ? `@media{${[].map.call(this.cssRules, (cssRule: any) => cssRule.cssText).join('')}}` : sourceCssText\n// \t\t\t\t\t\t}\n// \t\t\t\t\t}\n// \t\t\t\t\treturn rule\n// \t\t\t\t}\n//\n// \t\t\t\tsheetInstance = {\n// \t\t\t\t\tsheet: root ? (root.head || root).appendChild(root.createElement('style')).sheet : createCSSMediaRule(''),\n// \t\t\t\t\trules: {},\n// \t\t\t\t\treset,\n// \t\t\t\t\ttoString() {\n// \t\t\t\t\t\tconst {cssRules} = sheetInstance.sheet\n// \t\t\t\t\t\treturn [].map\n// \t\t\t\t\t\t\t.call(cssRules, (cssMediaRule: CSSMediaRule, cssRuleIndex) => {\n// \t\t\t\t\t\t\t\tconst {cssText} = cssMediaRule\n//\n// \t\t\t\t\t\t\t\tlet lastRuleCssText = ''\n// \t\t\t\t\t\t\t\tif (cssRules[cssRuleIndex - 1]) {\n// \t\t\t\t\t\t\t\t\tif (!cssMediaRule.cssRules.length) return ''\n//\n// \t\t\t\t\t\t\t\t\tfor (const name in sheetInstance.rules) {\n// \t\t\t\t\t\t\t\t\t\tif (sheetInstance.rules[name].group === cssMediaRule) {\n// \t\t\t\t\t\t\t\t\t\t\treturn `--sxs{--sxs:${[...sheetInstance.rules[name].cache].join(' ')}}${cssText}`\n// \t\t\t\t\t\t\t\t\t\t}\n// \t\t\t\t\t\t\t\t\t}\n//\n// \t\t\t\t\t\t\t\t\treturn cssMediaRule.cssRules.length ? `${lastRuleCssText}${cssText}` : ''\n// \t\t\t\t\t\t\t\t}\n//\n// \t\t\t\t\t\t\t\treturn cssText\n// \t\t\t\t\t\t\t})\n// \t\t\t\t\t\t\t.join('')\n// \t\t\t\t\t}\n// \t\t\t\t}\n// \t\t\t}\n// \t\t}\n//\n// \t}\n//\n// }\n\nexport type WeaverseType = {\n\t[key: string]: any\n\tappUrl?: string,\n\tprojectKey?: string,\n\tprojectData?: ProjectDataType\n}\n\nexport class Weaverse {\n\telementInstances = new Map<string, any>()\n\titemInstances = new Map<string | number, WeaverseItemStore>()\n\tappUrl: string = process.env.NODE_ENV === 'development' ? 'http://localhost:3000' : 'https://weaverse.io'\n\tprojectKey: string = ''\n\tprojectData: ProjectDataType = {\n\t\titems: []\n\t}\n\tlisteners: Set<any> = new Set()\n\tisEditor = false\n\tcurrentFrameSubscription: any\n\n\tconstructor({appUrl, projectKey, projectData}: WeaverseType = {}) {\n\t\tthis.appUrl = appUrl || this.appUrl\n\t\tthis.projectKey = projectKey || this.projectKey\n\t\tprojectData && (this.projectData = projectData)\n\t\tthis.init()\n\t}\n\n\tregisterElement(name: string, element: any) {\n\t\tthis.elementInstances.set(name, element)\n\t}\n\n\tinit() {\n\t\tthis.subscribeMessageEvent()\n\t}\n\n\tsubscribe(fn: any) {\n\t\tthis.listeners.add(fn)\n\t}\n\n\tunsubscribe(fn: any) {\n\t\tthis.listeners.delete(fn)\n\t}\n\n\ttriggerUpdate() {\n\t\tthis.listeners.forEach(fn => fn())\n\t\tthis.triggerEditorUpdate()\n\t}\n\n\tfetchProjectData() {\n\t\treturn fetch(this.appUrl + `/api/public/${this.projectKey}`).then(r => r.json())\n\t}\n\n\tupdateProjectData() {\n\t\tif (this.projectKey) {\n\t\t\tthis.fetchProjectData().then(data => {\n\t\t\t\tif (data) {\n\t\t\t\t\tthis.projectData = data\n\t\t\t\t\tthis.initItemData()\n\t\t\t\t\tthis.triggerUpdate()\n\t\t\t\t}\n\t\t\t}).catch(err => {\n\t\t\t\tconsole.error(err)\n\t\t\t})\n\t\t}\n\t}\n\n\tsubscribeMessageEvent() {\n\t\tif (typeof this.currentFrameSubscription === 'function') {\n\t\t\tthis.currentFrameSubscription()\n\t\t}\n\t\tisBrowser && window.addEventListener('message', this.handleMessageEvent)\n\t\tthis.currentFrameSubscription = () => {\n\t\t\tisBrowser && window.removeEventListener('message', this.handleMessageEvent)\n\t\t}\n\t\treturn this.currentFrameSubscription\n\t}\n\n\ttriggerEditorUpdate(type = 'weaverse.workspace.init') {\n\t\tif (this.isEditor) {\n\t\t\twindow.top?.postMessage({\n\t\t\t\ttype, payload: {\n\t\t\t\t\tprojectKey: this.projectKey,\n\t\t\t\t\tprojectData: this.projectData\n\t\t\t\t}\n\t\t\t}, '*')\n\t\t}\n\t}\n\n\thandleMessageEvent = (e: MessageEvent) => {\n\t\tif (e.data?.type?.startsWith('weaverse.')) {\n\t\t\tlet type = e.data.type\n\t\t\tswitch (type) {\n\t\t\t\tcase 'weaverse.editor.ready':\n\t\t\t\t\tthis.isEditor = true\n\t\t\t\t\tbreak\n\t\t\t\tcase 'weaverse.editor.update':\n\t\t\t\t\tlet {payload} = e.data\n\t\t\t\t\tlet {itemId, background} = payload\n\t\t\t\t\tlet instance = this.itemInstances.get(itemId)\n\t\t\t\t\tif (instance) {\n\t\t\t\t\t\tinstance.setData({\n\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\tbackground\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tinitItemData() {\n\t\tlet data = this.projectData\n\t\tif (data.items) {\n\t\t\tdata.items.forEach(item => {\n\t\t\t\tlet itemStore = this.itemInstances.get(item.id) || new WeaverseItemStore(item, this)\n\t\t\t\tthis.itemInstances.set(item.id, itemStore)\n\t\t\t})\n\t\t}\n\t}\n}\n\nexport class WeaverseItemStore {\n\tdata: any = {}\n\tlisteners: Set<any> = new Set()\n\tComponent: any\n\n\tconstructor(itemData: any = {}, weaverse: Weaverse) {\n\t\tthis.data = itemData\n\t\tlet {type} = itemData\n\t\tif (type) {\n\t\t\tthis.Component = weaverse.elementInstances.get(type)\n\t\t}\n\t}\n\n\tsetData = (data: any) => {\n\t\tthis.data = Object.assign(this.data, data)\n\t\tthis.triggerUpdate()\n\t}\n\n\tsubscribe = (fn: any) => {\n\t\tthis.listeners.add(fn)\n\t}\n\n\tunsubscribe = (fn: any) => {\n\t\tthis.listeners.delete(fn)\n\t}\n\n\ttriggerUpdate = () => {\n\t\tthis.listeners.forEach(fn => {\n\t\t\treturn fn(this.data)\n\t\t})\n\t}\n\n\n\n\t// addItem(item: any) {\n\t// \tthis.items.push(item)\n\t// \tthis.triggerUpdate()\n\t// }\n\t//\n\t// removeItem(item: any) {\n\t// \tthis.items = this.items.filter(i => i !== item)\n\t// \tthis.triggerUpdate()\n\t// }\n}","import * as React from 'react'\n\nexport const Button = (props: any) => {\n let [count, setCount] = React.useState(0)\n return <button {...props} onClick={() => setCount(count + 1)}>Test Button {count}</button>\n}\n\nButton.defaultProps = {\n style: {\n backgroundColor: 'green',\n borderRadius: '9999px',\n fontSize: '13px',\n padding: '10px 15px'\n },\n type: 'button',\n tag: 'button'\n}\nButton.configs = {\n type: 'button'\n}\n\nexport default Button","import React from 'react'\n\nexport const BaseElement = ({tag = 'div', children, ...props}: any) => {\n return React.createElement(tag, {\n ...props\n }, children)\n}\n\nBaseElement.configs = {\n type: 'base'\n}\nexport default BaseElement\n","import Button from './button'\nimport BaseElement from './base'\n\nconst elements = {\n\tButton,\n\tBaseElement\n}\nexport default elements","import * as React from 'react'\nimport {useEffect} from 'react'\nimport {Weaverse, WeaverseType} from './core'\nimport Elements from './elements'\n\nlet stitches = require('@stitches/core')\n\nconst createRootContext = (configs: WeaverseType) => {\n const rootContext = new Weaverse(configs)\n Object.keys(Elements).forEach(key => {\n // @ts-ignore\n Elements[key]?.configs?.type && rootContext.registerElement(Elements[key].configs.type, Elements[key])\n })\n\n return rootContext\n}\n\nconst WeaverseRoot = ({context, defaultData}: { context: Weaverse, defaultData: any }) => {\n let [, setData] = React.useState<any>(context.projectData)\n useEffect(() => {\n let handleUpdate = () => {\n setData(context.projectData)\n }\n context.subscribe(handleUpdate)\n context.updateProjectData()\n\n return () => {\n context.unsubscribe(handleUpdate)\n }\n }, [])\n if (!context.projectData?.items?.length && defaultData) {\n context.projectData = defaultData\n context.initItemData()\n }\n return <RenderItem itemId={0} context={context}/>\n}\n\n\nconst Item = ({itemInstance, elementInstances, context}: any) => {\n let [data, setData] = React.useState<any>(itemInstance.data)\n let {id, type, childIds, ...rest} = data\n\n useEffect(() => {\n let handleUpdate = (update: any) => {\n setData({...update})\n }\n itemInstance.subscribe(handleUpdate)\n return () => {\n itemInstance.unsubscribe(handleUpdate)\n }\n }, [])\n let Component = elementInstances.get(type)\n if (Component) {\n return <Component key={id} data-wv-id={id} {...rest}>\n {Array.isArray(childIds)\n && childIds.map(childId =>\n <RenderItem\n key={childId}\n itemId={childId}\n context={context}\n />\n )}\n </Component>\n }\n return null\n}\n\n\nconst RenderItem = ({itemId, context}: { itemId: number, context: any }): any => {\n let {itemInstances, elementInstances} = context\n let itemInstance = itemInstances.get(itemId)\n if (itemInstance) {\n return <Item itemInstance={itemInstance} elementInstances={elementInstances} context={context}/>\n }\n return <></>\n}\n\nexport {createRootContext, WeaverseRoot}\n"],"names":["isReactNative","navigator","product","isBrowser","window","Weaverse","appUrl","projectKey","projectData","Map","process","items","Set","e","data","type","startsWith","isEditor","payload","itemId","background","instance","itemInstances","get","setData","style","init","registerElement","name","element","elementInstances","set","subscribeMessageEvent","subscribe","fn","listeners","add","unsubscribe","triggerUpdate","forEach","triggerEditorUpdate","fetchProjectData","fetch","then","r","json","updateProjectData","initItemData","err","console","error","currentFrameSubscription","addEventListener","handleMessageEvent","removeEventListener","top","postMessage","item","itemStore","id","WeaverseItemStore","itemData","weaverse","Object","assign","Component","Button","props","React","count","setCount","onClick","defaultProps","backgroundColor","borderRadius","fontSize","padding","tag","configs","BaseElement","children","createElement","elements","createRootContext","rootContext","keys","Elements","key","WeaverseRoot","context","defaultData","useEffect","handleUpdate","length","RenderItem","Item","itemInstance","childIds","rest","update","Array","isArray","map","childId"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sdk-react.cjs.development.js","sources":["../src/elements/button.tsx","../src/elements/base.tsx","../src/elements/grid.tsx","../src/elements/index.ts","../src/index.tsx"],"sourcesContent":["import * as React from 'react'\n\nexport const Button = React.forwardRef((props: any, ref) => {\n let [count, setCount] = React.useState(0)\n return <button ref={ref} {...props} onClick={() => setCount(count + 1)}>Test Button {count}</button>\n})\n\nButton.defaultProps = {\n style: {\n backgroundColor: 'green',\n borderRadius: '9999px',\n fontSize: '13px',\n padding: '10px 15px'\n },\n type: 'button',\n tag: 'button'\n}\n\nexport default Button","import React from 'react'\n\nexport const BaseElement = ({tag, children, ...props}: any) => {\n return React.createElement(tag, {\n ...props\n }, children)\n}\n\nBaseElement.defaultProps = {\n type: 'base',\n tag: 'div'\n}\nexport default BaseElement\n","import React from 'react'\n\nexport default function Grid(props: any) {\n return <div {...props} />\n}\n\nGrid.defaultProps = {\n style: {\n // display: 'grid',\n // outline: '1px solid red',\n },\n type: 'grid'\n}","import Button from './button'\nimport BaseElement from './base'\nimport Grid from './grid'\n\nconst elements = {\n Button,\n BaseElement,\n Grid\n}\nexport default elements","import React, {FC, useEffect, useState} from 'react'\nimport {isBrowser, Weaverse, WeaverseItemStore, WeaverseType} from '@weaverse/core'\nimport Elements from './elements'\n\n\nconst createRootContext = (configs: WeaverseType) => {\n const rootContext = new Weaverse(configs)\n // Register the element components\n Object.keys(Elements).forEach(key => {\n // @ts-ignore\n Elements[key]?.defaultProps?.type && rootContext.registerElement(Elements[key].defaultProps.type, Elements[key])\n })\n\n return rootContext\n}\n\nconst WeaverseRoot = ({context, defaultData}: { context: Weaverse, defaultData: any }) => {\n let [, setData] = useState<any>(context.projectData)\n useEffect(() => {\n let handleUpdate = () => {\n setData({...context.projectData})\n }\n context.subscribe(handleUpdate)\n context.updateProjectData()\n let shouldRenderStudio = context.loadStudio()\n console.log('shouldRenderStudio', shouldRenderStudio)\n if (shouldRenderStudio) {\n handleUpdate()\n }\n return () => {\n context.unsubscribe(handleUpdate)\n }\n }, [])\n if (!context.projectData?.items?.length && defaultData) {\n context.projectData = defaultData\n context.initItemData()\n }\n let handleProps = context?.studioBridge?.handleProps || {}\n console.log('handleProps', handleProps)\n return <div {...handleProps}>\n <RenderItem itemId={0} context={context}/>\n </div>\n}\n\ntype ItemProps = {\n itemInstance: WeaverseItemStore\n elementInstances: Map<string, FC>\n context: Weaverse\n}\n\n\nconst Item = ({itemInstance, elementInstances, context}: ItemProps) => {\n let [data, setData] = useState<any>(itemInstance.data)\n let {id, type, childIds, css, className, ...rest} = data\n useEffect(() => {\n let handleUpdate = (update: any) => {\n setData({...update})\n }\n itemInstance.subscribe(handleUpdate)\n if (!itemInstance.ref.current && isBrowser) {\n Object.assign(itemInstance.ref, {current: document.querySelector(`[data-wv-id=\"${id}\"]`)})\n }\n\n return () => {\n itemInstance.unsubscribe(handleUpdate)\n }\n }, [])\n\n let realClassName = className || ''\n if (css) {\n\n // let stitches create the style from css object and\n // then return the classname, so we can use it in the render\n let selector = (context.stitchesInstance.css(css)()).className\n\n realClassName += ' ' + selector\n }\n let Component = elementInstances.get(type)\n if (Component) {\n // @ts-ignore\n if (Component.$$typeof === Symbol.for('react.forward_ref')) {\n rest.ref = itemInstance.ref\n }\n return <Component key={id} data-wv-id={id} {...rest} className={realClassName}>\n {Array.isArray(childIds)\n && childIds.map(childId =>\n <RenderItem\n key={childId}\n itemId={childId}\n context={context}\n />\n )}\n </Component>\n }\n return null\n}\n\nconst RenderItem = ({itemId, context}: { itemId: number, context: any }): any => {\n let {itemInstances, elementInstances} = context\n let itemInstance = itemInstances.get(itemId)\n if (itemInstance) {\n return <Item itemInstance={itemInstance} elementInstances={elementInstances} context={context}/>\n }\n return <></>\n}\n\nexport {createRootContext, WeaverseRoot}\n"],"names":["Button","React","props","ref","count","setCount","onClick","defaultProps","style","backgroundColor","borderRadius","fontSize","padding","type","tag","BaseElement","children","createElement","Grid","elements","createRootContext","configs","rootContext","Weaverse","Object","keys","Elements","forEach","key","registerElement","WeaverseRoot","context","defaultData","useState","projectData","setData","useEffect","handleUpdate","subscribe","updateProjectData","shouldRenderStudio","loadStudio","console","log","unsubscribe","items","length","initItemData","handleProps","studioBridge","RenderItem","itemId","Item","itemInstance","elementInstances","data","id","childIds","css","className","rest","update","current","isBrowser","assign","document","querySelector","realClassName","selector","stitchesInstance","Component","get","$$typeof","Symbol","Array","isArray","map","childId","itemInstances"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,t=require("react"),r=(e=t)&&"object"==typeof e&&"default"in e?e.default:e,n=require("@weaverse/core");function a(){return(a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function c(e,t){if(null==e)return{};var r,n,a={},c=Object.keys(e);for(n=0;n<c.length;n++)t.indexOf(r=c[n])>=0||(a[r]=e[r]);return a}var o=t.forwardRef((function(e,r){var n=t.useState(0),a=n[0],c=n[1];return t.createElement("button",Object.assign({ref:r},e,{onClick:function(){return c(a+1)}}),"Test Button ",a)}));o.defaultProps={style:{backgroundColor:"green",borderRadius:"9999px",fontSize:"13px",padding:"10px 15px"},type:"button",tag:"button"};var s=["tag","children"],u=function(e){var t=e.tag,n=e.children,o=c(e,s);return r.createElement(t,a({},o),n)};function i(e){return r.createElement("div",Object.assign({},e))}u.defaultProps={type:"base",tag:"div"},i.defaultProps={style:{},type:"grid"};var l={Button:o,BaseElement:u,Grid:i},d=["id","type","childIds","css","className"],f=function(e){var o=e.itemInstance,s=e.elementInstances,u=e.context,i=t.useState(o.data),l=i[0],f=i[1],v=l.id,m=l.type,b=l.childIds,g=l.css,y=l.className,j=c(l,d);t.useEffect((function(){var e=function(e){f(a({},e))};return o.subscribe(e),!o.ref.current&&n.isBrowser&&Object.assign(o.ref,{current:document.querySelector('[data-wv-id="'+v+'"]')}),function(){o.unsubscribe(e)}}),[]);var x=y||"";g&&(x+=" "+u.stitchesInstance.css(g)().className);var h=s.get(m);return h?(h.$$typeof===Symbol.for("react.forward_ref")&&(j.ref=o.ref),r.createElement(h,Object.assign({key:v,"data-wv-id":v},j,{className:x}),Array.isArray(b)&&b.map((function(e){return r.createElement(p,{key:e,itemId:e,context:u})})))):null},p=function(e){var t=e.context,n=t.elementInstances,a=t.itemInstances.get(e.itemId);return a?r.createElement(f,{itemInstance:a,elementInstances:n,context:t}):r.createElement(r.Fragment,null)};exports.WeaverseRoot=function(e){var n,c,o,s=e.context,u=e.defaultData,i=t.useState(s.projectData)[1];t.useEffect((function(){var e=function(){i(a({},s.projectData))};s.subscribe(e),s.updateProjectData();var t=s.loadStudio();return console.log("shouldRenderStudio",t),t&&e(),function(){s.unsubscribe(e)}}),[]),null!=(n=s.projectData)&&null!=(c=n.items)&&c.length||!u||(s.projectData=u,s.initItemData());var l=(null==s||null==(o=s.studioBridge)?void 0:o.handleProps)||{};return console.log("handleProps",l),r.createElement("div",Object.assign({},l),r.createElement(p,{itemId:0,context:s}))},exports.createRootContext=function(e){var t=new n.Weaverse(e);return Object.keys(l).forEach((function(e){var r,n;(null==(r=l[e])||null==(n=r.defaultProps)?void 0:n.type)&&t.registerElement(l[e].defaultProps.type,l[e])})),t};
|
|
2
2
|
//# sourceMappingURL=sdk-react.cjs.production.min.js.map
|