@weaverse/react 0.1.7 → 0.1.11
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 +1 -6
- package/dist/elements/button.d.ts +2 -16
- package/dist/elements/grid.d.ts +12 -0
- package/dist/elements/index.d.ts +4 -22
- package/dist/index.d.ts +1 -7
- package/dist/renderer.d.ts +7 -0
- package/dist/sdk-react.cjs.development.js +65 -222
- 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 +66 -223
- package/dist/sdk-react.esm.js.map +1 -1
- package/package.json +11 -13
- 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/sdk-react.esm.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import React__default, { useState, createElement, useEffect, Fragment } from 'react';
|
|
2
|
-
import
|
|
1
|
+
import React__default, { forwardRef, useState, createElement, useEffect, Fragment } from 'react';
|
|
2
|
+
import { Weaverse, isBrowser } from '@weaverse/core';
|
|
3
3
|
|
|
4
4
|
function _extends() {
|
|
5
5
|
_extends = Object.assign || function (target) {
|
|
@@ -34,214 +34,19 @@ function _objectWithoutPropertiesLoose(source, excluded) {
|
|
|
34
34
|
return target;
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
var
|
|
38
|
-
var isBrowser = typeof window !== 'undefined' && !isReactNative;
|
|
39
|
-
|
|
40
|
-
// TODO: Implement Weaverse SDK class
|
|
41
|
-
var Weaverse = /*#__PURE__*/function () {
|
|
42
|
-
function Weaverse(_temp) {
|
|
43
|
-
var _this = this;
|
|
44
|
-
|
|
45
|
-
var _ref = _temp === void 0 ? {} : _temp,
|
|
46
|
-
appUrl = _ref.appUrl,
|
|
47
|
-
projectKey = _ref.projectKey,
|
|
48
|
-
projectData = _ref.projectData;
|
|
49
|
-
|
|
50
|
-
this.elementInstances = new Map();
|
|
51
|
-
this.itemInstances = new Map();
|
|
52
|
-
this.appUrl = process.env.NODE_ENV === 'development' ? 'http://localhost:3000' : 'https://weaverse.io';
|
|
53
|
-
this.projectKey = '';
|
|
54
|
-
this.projectData = {
|
|
55
|
-
items: []
|
|
56
|
-
};
|
|
57
|
-
this.listeners = new Set();
|
|
58
|
-
this.isEditor = false;
|
|
59
|
-
|
|
60
|
-
this.handleMessageEvent = function (e) {
|
|
61
|
-
var _e$data, _e$data$type;
|
|
62
|
-
|
|
63
|
-
if ((_e$data = e.data) != null && (_e$data$type = _e$data.type) != null && _e$data$type.startsWith('weaverse.')) {
|
|
64
|
-
var type = e.data.type;
|
|
65
|
-
|
|
66
|
-
switch (type) {
|
|
67
|
-
case 'weaverse.editor.ready':
|
|
68
|
-
_this.isEditor = true;
|
|
69
|
-
break;
|
|
70
|
-
|
|
71
|
-
case 'weaverse.editor.update':
|
|
72
|
-
var payload = e.data.payload;
|
|
73
|
-
var itemId = payload.itemId,
|
|
74
|
-
background = payload.background;
|
|
75
|
-
|
|
76
|
-
var instance = _this.itemInstances.get(itemId);
|
|
77
|
-
|
|
78
|
-
if (instance) {
|
|
79
|
-
instance.setData({
|
|
80
|
-
style: {
|
|
81
|
-
background: background
|
|
82
|
-
}
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
};
|
|
89
|
-
|
|
90
|
-
this.appUrl = appUrl || this.appUrl;
|
|
91
|
-
this.projectKey = projectKey || this.projectKey;
|
|
92
|
-
projectData && (this.projectData = projectData);
|
|
93
|
-
this.init();
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
var _proto = Weaverse.prototype;
|
|
97
|
-
|
|
98
|
-
_proto.registerElement = function registerElement(name, element) {
|
|
99
|
-
this.elementInstances.set(name, element);
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
_proto.init = function init() {
|
|
103
|
-
this.subscribeMessageEvent();
|
|
104
|
-
};
|
|
105
|
-
|
|
106
|
-
_proto.subscribe = function subscribe(fn) {
|
|
107
|
-
this.listeners.add(fn);
|
|
108
|
-
};
|
|
109
|
-
|
|
110
|
-
_proto.unsubscribe = function unsubscribe(fn) {
|
|
111
|
-
this.listeners["delete"](fn);
|
|
112
|
-
};
|
|
113
|
-
|
|
114
|
-
_proto.triggerUpdate = function triggerUpdate() {
|
|
115
|
-
this.listeners.forEach(function (fn) {
|
|
116
|
-
return fn();
|
|
117
|
-
});
|
|
118
|
-
this.triggerEditorUpdate();
|
|
119
|
-
};
|
|
120
|
-
|
|
121
|
-
_proto.fetchProjectData = function fetchProjectData() {
|
|
122
|
-
return fetch(this.appUrl + ("/api/public/" + this.projectKey)).then(function (r) {
|
|
123
|
-
return r.json();
|
|
124
|
-
});
|
|
125
|
-
};
|
|
126
|
-
|
|
127
|
-
_proto.updateProjectData = function updateProjectData() {
|
|
128
|
-
var _this2 = this;
|
|
129
|
-
|
|
130
|
-
if (this.projectKey) {
|
|
131
|
-
this.fetchProjectData().then(function (data) {
|
|
132
|
-
if (data) {
|
|
133
|
-
_this2.projectData = data;
|
|
134
|
-
|
|
135
|
-
_this2.initItemData();
|
|
136
|
-
|
|
137
|
-
_this2.triggerUpdate();
|
|
138
|
-
}
|
|
139
|
-
})["catch"](function (err) {
|
|
140
|
-
console.error(err);
|
|
141
|
-
});
|
|
142
|
-
}
|
|
143
|
-
};
|
|
144
|
-
|
|
145
|
-
_proto.subscribeMessageEvent = function subscribeMessageEvent() {
|
|
146
|
-
var _this3 = this;
|
|
147
|
-
|
|
148
|
-
if (typeof this.currentFrameSubscription === 'function') {
|
|
149
|
-
this.currentFrameSubscription();
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
isBrowser && window.addEventListener('message', this.handleMessageEvent);
|
|
153
|
-
|
|
154
|
-
this.currentFrameSubscription = function () {
|
|
155
|
-
isBrowser && window.removeEventListener('message', _this3.handleMessageEvent);
|
|
156
|
-
};
|
|
157
|
-
|
|
158
|
-
return this.currentFrameSubscription;
|
|
159
|
-
};
|
|
160
|
-
|
|
161
|
-
_proto.triggerEditorUpdate = function triggerEditorUpdate(type) {
|
|
162
|
-
if (type === void 0) {
|
|
163
|
-
type = 'weaverse.workspace.init';
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
if (this.isEditor) {
|
|
167
|
-
var _window$top;
|
|
168
|
-
|
|
169
|
-
(_window$top = window.top) == null ? void 0 : _window$top.postMessage({
|
|
170
|
-
type: type,
|
|
171
|
-
payload: {
|
|
172
|
-
projectKey: this.projectKey,
|
|
173
|
-
projectData: this.projectData
|
|
174
|
-
}
|
|
175
|
-
}, '*');
|
|
176
|
-
}
|
|
177
|
-
};
|
|
178
|
-
|
|
179
|
-
_proto.initItemData = function initItemData() {
|
|
180
|
-
var _this4 = this;
|
|
181
|
-
|
|
182
|
-
var data = this.projectData;
|
|
183
|
-
|
|
184
|
-
if (data.items) {
|
|
185
|
-
data.items.forEach(function (item) {
|
|
186
|
-
var itemStore = _this4.itemInstances.get(item.id) || new WeaverseItemStore(item, _this4);
|
|
187
|
-
|
|
188
|
-
_this4.itemInstances.set(item.id, itemStore);
|
|
189
|
-
});
|
|
190
|
-
}
|
|
191
|
-
};
|
|
192
|
-
|
|
193
|
-
return Weaverse;
|
|
194
|
-
}();
|
|
195
|
-
var WeaverseItemStore = function WeaverseItemStore(itemData, weaverse) {
|
|
196
|
-
var _this5 = this;
|
|
197
|
-
|
|
198
|
-
if (itemData === void 0) {
|
|
199
|
-
itemData = {};
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
this.data = {};
|
|
203
|
-
this.listeners = new Set();
|
|
204
|
-
|
|
205
|
-
this.setData = function (data) {
|
|
206
|
-
_this5.data = Object.assign(_this5.data, data);
|
|
207
|
-
|
|
208
|
-
_this5.triggerUpdate();
|
|
209
|
-
};
|
|
210
|
-
|
|
211
|
-
this.subscribe = function (fn) {
|
|
212
|
-
_this5.listeners.add(fn);
|
|
213
|
-
};
|
|
214
|
-
|
|
215
|
-
this.unsubscribe = function (fn) {
|
|
216
|
-
_this5.listeners["delete"](fn);
|
|
217
|
-
};
|
|
218
|
-
|
|
219
|
-
this.triggerUpdate = function () {
|
|
220
|
-
_this5.listeners.forEach(function (fn) {
|
|
221
|
-
return fn(_this5.data);
|
|
222
|
-
});
|
|
223
|
-
};
|
|
224
|
-
|
|
225
|
-
this.data = itemData;
|
|
226
|
-
var _itemData = itemData,
|
|
227
|
-
type = _itemData.type;
|
|
228
|
-
|
|
229
|
-
if (type) {
|
|
230
|
-
this.Component = weaverse.elementInstances.get(type);
|
|
231
|
-
}
|
|
232
|
-
};
|
|
233
|
-
|
|
234
|
-
var Button = function Button(props) {
|
|
37
|
+
var Button = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
235
38
|
var _React$useState = useState(0),
|
|
236
39
|
count = _React$useState[0],
|
|
237
40
|
setCount = _React$useState[1];
|
|
238
41
|
|
|
239
|
-
return createElement("button", Object.assign({
|
|
42
|
+
return createElement("button", Object.assign({
|
|
43
|
+
ref: ref
|
|
44
|
+
}, props, {
|
|
240
45
|
onClick: function onClick() {
|
|
241
46
|
return setCount(count + 1);
|
|
242
47
|
}
|
|
243
48
|
}), "Test Button ", count);
|
|
244
|
-
};
|
|
49
|
+
});
|
|
245
50
|
Button.defaultProps = {
|
|
246
51
|
style: {
|
|
247
52
|
backgroundColor: 'green',
|
|
@@ -252,43 +57,54 @@ Button.defaultProps = {
|
|
|
252
57
|
type: 'button',
|
|
253
58
|
tag: 'button'
|
|
254
59
|
};
|
|
255
|
-
Button.configs = {
|
|
256
|
-
type: 'button'
|
|
257
|
-
};
|
|
258
60
|
|
|
259
61
|
var _excluded = ["tag", "children"];
|
|
260
|
-
var BaseElement = function
|
|
261
|
-
var
|
|
262
|
-
tag = _ref$tag === void 0 ? 'div' : _ref$tag,
|
|
62
|
+
var BaseElement = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
|
|
63
|
+
var tag = _ref.tag,
|
|
263
64
|
children = _ref.children,
|
|
264
65
|
props = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
265
66
|
|
|
266
|
-
return React__default.createElement(tag, _extends({
|
|
67
|
+
return React__default.createElement(tag, _extends({
|
|
68
|
+
ref: ref
|
|
69
|
+
}, props), children);
|
|
70
|
+
});
|
|
71
|
+
BaseElement.defaultProps = {
|
|
72
|
+
type: 'base',
|
|
73
|
+
tag: 'div',
|
|
74
|
+
style: {}
|
|
267
75
|
};
|
|
268
|
-
|
|
269
|
-
|
|
76
|
+
|
|
77
|
+
function Grid(props) {
|
|
78
|
+
return React__default.createElement("div", Object.assign({}, props));
|
|
79
|
+
}
|
|
80
|
+
Grid.defaultProps = {
|
|
81
|
+
style: {
|
|
82
|
+
display: 'grid',
|
|
83
|
+
gridTemplate: '1fr / 1fr'
|
|
84
|
+
},
|
|
85
|
+
type: 'grid'
|
|
270
86
|
};
|
|
271
87
|
|
|
272
88
|
var elements = {
|
|
273
89
|
Button: Button,
|
|
274
|
-
BaseElement: BaseElement
|
|
90
|
+
BaseElement: BaseElement,
|
|
91
|
+
Grid: Grid
|
|
275
92
|
};
|
|
276
93
|
|
|
277
|
-
var _excluded$1 = ["id", "type", "childIds"];
|
|
278
|
-
|
|
94
|
+
var _excluded$1 = ["id", "type", "childIds", "css", "className"];
|
|
279
95
|
var createRootContext = function createRootContext(configs) {
|
|
280
|
-
var rootContext = new Weaverse(configs);
|
|
96
|
+
var rootContext = new Weaverse(configs); // Register the element components
|
|
97
|
+
|
|
281
98
|
Object.keys(elements).forEach(function (key) {
|
|
282
|
-
var _Elements$key, _Elements$key$
|
|
99
|
+
var _Elements$key, _Elements$key$default;
|
|
283
100
|
|
|
284
101
|
// @ts-ignore
|
|
285
|
-
((_Elements$key = elements[key]) == null ? void 0 : (_Elements$key$
|
|
102
|
+
((_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]);
|
|
286
103
|
});
|
|
287
104
|
return rootContext;
|
|
288
105
|
};
|
|
289
|
-
|
|
290
106
|
var WeaverseRoot = function WeaverseRoot(_ref) {
|
|
291
|
-
var _context$projectData, _context$projectData
|
|
107
|
+
var _context$projectData, _context$projectData$, _context$studioBridge;
|
|
292
108
|
|
|
293
109
|
var context = _ref.context,
|
|
294
110
|
defaultData = _ref.defaultData;
|
|
@@ -298,7 +114,7 @@ var WeaverseRoot = function WeaverseRoot(_ref) {
|
|
|
298
114
|
|
|
299
115
|
useEffect(function () {
|
|
300
116
|
var handleUpdate = function handleUpdate() {
|
|
301
|
-
setData(context.projectData);
|
|
117
|
+
setData(_extends({}, context.projectData));
|
|
302
118
|
};
|
|
303
119
|
|
|
304
120
|
context.subscribe(handleUpdate);
|
|
@@ -313,10 +129,12 @@ var WeaverseRoot = function WeaverseRoot(_ref) {
|
|
|
313
129
|
context.initItemData();
|
|
314
130
|
}
|
|
315
131
|
|
|
316
|
-
|
|
132
|
+
var handleProps = (context == null ? void 0 : (_context$studioBridge = context.studioBridge) == null ? void 0 : _context$studioBridge.handleProps) || {};
|
|
133
|
+
console.log('handleProps', handleProps);
|
|
134
|
+
return createElement("div", Object.assign({}, handleProps), createElement(RenderItem, {
|
|
317
135
|
itemId: 0,
|
|
318
136
|
context: context
|
|
319
|
-
});
|
|
137
|
+
}));
|
|
320
138
|
};
|
|
321
139
|
|
|
322
140
|
var Item = function Item(_ref2) {
|
|
@@ -331,6 +149,8 @@ var Item = function Item(_ref2) {
|
|
|
331
149
|
var id = data.id,
|
|
332
150
|
type = data.type,
|
|
333
151
|
childIds = data.childIds,
|
|
152
|
+
css = data.css,
|
|
153
|
+
className = data.className,
|
|
334
154
|
rest = _objectWithoutPropertiesLoose(data, _excluded$1);
|
|
335
155
|
|
|
336
156
|
useEffect(function () {
|
|
@@ -339,17 +159,40 @@ var Item = function Item(_ref2) {
|
|
|
339
159
|
};
|
|
340
160
|
|
|
341
161
|
itemInstance.subscribe(handleUpdate);
|
|
162
|
+
|
|
163
|
+
if (!itemInstance.ref.current && isBrowser) {
|
|
164
|
+
Object.assign(itemInstance.ref, {
|
|
165
|
+
current: document.querySelector("[data-wv-id=\"" + id + "\"]")
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
|
|
342
169
|
return function () {
|
|
343
170
|
itemInstance.unsubscribe(handleUpdate);
|
|
344
171
|
};
|
|
345
172
|
}, []);
|
|
173
|
+
var realClassName = className || '';
|
|
174
|
+
|
|
175
|
+
if (css) {
|
|
176
|
+
// let stitches create the style from css object and
|
|
177
|
+
// then return the classname, so we can use it in the render
|
|
178
|
+
var selector = context.stitchesInstance.css(css)().className;
|
|
179
|
+
realClassName += ' ' + selector;
|
|
180
|
+
}
|
|
181
|
+
|
|
346
182
|
var Component = elementInstances.get(type);
|
|
347
183
|
|
|
348
184
|
if (Component) {
|
|
185
|
+
// @ts-ignore
|
|
186
|
+
if (Component.$$typeof === Symbol["for"]('react.forward_ref')) {
|
|
187
|
+
rest.ref = itemInstance.ref;
|
|
188
|
+
}
|
|
189
|
+
|
|
349
190
|
return createElement(Component, Object.assign({
|
|
350
191
|
key: id,
|
|
351
192
|
"data-wv-id": id
|
|
352
|
-
}, rest
|
|
193
|
+
}, rest, {
|
|
194
|
+
className: realClassName
|
|
195
|
+
}), Array.isArray(childIds) && childIds.map(function (childId) {
|
|
353
196
|
return createElement(RenderItem, {
|
|
354
197
|
key: childId,
|
|
355
198
|
itemId: childId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-react.esm.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","env","NODE_ENV","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.esm.js","sources":["../src/elements/button.tsx","../src/elements/base.tsx","../src/elements/grid.tsx","../src/elements/index.ts","../src/renderer.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 = React.forwardRef((({tag, children, ...props}: any, ref) => {\n return React.createElement(tag, {\n ref,\n ...props\n }, children)\n}))\n\nBaseElement.defaultProps = {\n type: 'base',\n tag: 'div',\n style: {}\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 gridTemplate: '1fr / 1fr'\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 * as React from 'react'\nimport {isBrowser, Weaverse, WeaverseItemStore, WeaverseType} from '@weaverse/core'\nimport Elements from './elements'\n\nexport const 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 return rootContext\n}\n\nexport const WeaverseRoot = ({context, defaultData}: { context: Weaverse, defaultData: any }) => {\n let [, setData] = React.useState<any>(context.projectData)\n React.useEffect(() => {\n let handleUpdate = () => {\n setData({...context.projectData})\n }\n context.subscribe(handleUpdate)\n context.updateProjectData()\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\n\ntype ItemProps = {\n itemInstance: WeaverseItemStore\n elementInstances: Map<string, React.FC>\n context: Weaverse\n}\n\n\nconst Item = ({itemInstance, elementInstances, context}: ItemProps) => {\n let [data, setData] = React.useState<any>(itemInstance.data)\n let {id, type, childIds, css, className, ...rest} = data\n React.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 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\n"],"names":["Button","React","props","ref","count","setCount","onClick","defaultProps","style","backgroundColor","borderRadius","fontSize","padding","type","tag","BaseElement","forwardRef","children","createElement","Grid","display","gridTemplate","elements","createRootContext","configs","rootContext","Weaverse","Object","keys","Elements","forEach","key","registerElement","WeaverseRoot","context","defaultData","projectData","setData","handleUpdate","subscribe","updateProjectData","unsubscribe","items","length","initItemData","handleProps","studioBridge","console","log","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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"}
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.1.
|
|
2
|
+
"version": "0.1.11",
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"typings": "dist/index.d.ts",
|
|
@@ -7,8 +7,7 @@
|
|
|
7
7
|
"access": "public"
|
|
8
8
|
},
|
|
9
9
|
"files": [
|
|
10
|
-
"dist"
|
|
11
|
-
"src"
|
|
10
|
+
"dist"
|
|
12
11
|
],
|
|
13
12
|
"engines": {
|
|
14
13
|
"node": ">=10"
|
|
@@ -24,7 +23,8 @@
|
|
|
24
23
|
"analyze": "size-limit --why"
|
|
25
24
|
},
|
|
26
25
|
"peerDependencies": {
|
|
27
|
-
"react": ">=
|
|
26
|
+
"react": ">=17",
|
|
27
|
+
"react-dom": ">=17"
|
|
28
28
|
},
|
|
29
29
|
"husky": {
|
|
30
30
|
"hooks": {
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"trailingComma": "es5"
|
|
39
39
|
},
|
|
40
40
|
"name": "@weaverse/react",
|
|
41
|
-
"author": "
|
|
41
|
+
"author": "Weaverse Team",
|
|
42
42
|
"module": "dist/sdk-react.esm.js",
|
|
43
43
|
"size-limit": [
|
|
44
44
|
{
|
|
@@ -51,19 +51,17 @@
|
|
|
51
51
|
}
|
|
52
52
|
],
|
|
53
53
|
"devDependencies": {
|
|
54
|
-
"@size-limit/preset-small-lib": "^7.0.
|
|
55
|
-
"@types/react": "^17.0.
|
|
54
|
+
"@size-limit/preset-small-lib": "^7.0.8",
|
|
55
|
+
"@types/react": "^17.0.39",
|
|
56
56
|
"@types/react-dom": "^17.0.11",
|
|
57
|
+
"@types/react-is": "^17.0.3",
|
|
57
58
|
"husky": "^7.0.4",
|
|
58
|
-
"
|
|
59
|
-
"react-dom": "^17.0.2",
|
|
60
|
-
"size-limit": "^7.0.4",
|
|
59
|
+
"size-limit": "^7.0.8",
|
|
61
60
|
"tsdx": "^0.14.1",
|
|
62
61
|
"tslib": "^2.3.1",
|
|
63
|
-
"typescript": "^4.5.
|
|
62
|
+
"typescript": "^4.5.5"
|
|
64
63
|
},
|
|
65
64
|
"dependencies": {
|
|
66
|
-
"@
|
|
67
|
-
"isomorphic-unfetch": "^3.1.0"
|
|
65
|
+
"@weaverse/core": "^0.2.4"
|
|
68
66
|
}
|
|
69
67
|
}
|
package/dist/core.d.ts
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
export interface ProjectDataItemType {
|
|
2
|
-
type: string;
|
|
3
|
-
name: string;
|
|
4
|
-
id: string | number;
|
|
5
|
-
}
|
|
6
|
-
export interface ProjectDataType {
|
|
7
|
-
items: ProjectDataItemType[];
|
|
8
|
-
}
|
|
9
|
-
export declare type WeaverseType = {
|
|
10
|
-
[key: string]: any;
|
|
11
|
-
appUrl?: string;
|
|
12
|
-
projectKey?: string;
|
|
13
|
-
projectData?: ProjectDataType;
|
|
14
|
-
};
|
|
15
|
-
export declare class Weaverse {
|
|
16
|
-
elementInstances: Map<string, any>;
|
|
17
|
-
itemInstances: Map<string | number, WeaverseItemStore>;
|
|
18
|
-
appUrl: string;
|
|
19
|
-
projectKey: string;
|
|
20
|
-
projectData: ProjectDataType;
|
|
21
|
-
listeners: Set<any>;
|
|
22
|
-
isEditor: boolean;
|
|
23
|
-
currentFrameSubscription: any;
|
|
24
|
-
constructor({ appUrl, projectKey, projectData }?: WeaverseType);
|
|
25
|
-
registerElement(name: string, element: any): void;
|
|
26
|
-
init(): void;
|
|
27
|
-
subscribe(fn: any): void;
|
|
28
|
-
unsubscribe(fn: any): void;
|
|
29
|
-
triggerUpdate(): void;
|
|
30
|
-
fetchProjectData(): Promise<any>;
|
|
31
|
-
updateProjectData(): void;
|
|
32
|
-
subscribeMessageEvent(): any;
|
|
33
|
-
triggerEditorUpdate(type?: string): void;
|
|
34
|
-
handleMessageEvent: (e: MessageEvent) => void;
|
|
35
|
-
initItemData(): void;
|
|
36
|
-
}
|
|
37
|
-
export declare class WeaverseItemStore {
|
|
38
|
-
data: any;
|
|
39
|
-
listeners: Set<any>;
|
|
40
|
-
Component: any;
|
|
41
|
-
constructor(itemData: any, weaverse: Weaverse);
|
|
42
|
-
setData: (data: any) => void;
|
|
43
|
-
subscribe: (fn: any) => void;
|
|
44
|
-
unsubscribe: (fn: any) => void;
|
|
45
|
-
triggerUpdate: () => void;
|
|
46
|
-
}
|
package/dist/utils/index.d.ts
DELETED