@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/elements/base.d.ts
CHANGED
|
@@ -1,8 +1,3 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
export declare const BaseElement:
|
|
3
|
-
({ tag, children, ...props }: any): React.DetailedReactHTMLElement<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>;
|
|
4
|
-
configs: {
|
|
5
|
-
type: string;
|
|
6
|
-
};
|
|
7
|
-
};
|
|
2
|
+
export declare const BaseElement: React.ForwardRefExoticComponent<Pick<any, string | number | symbol> & React.RefAttributes<unknown>>;
|
|
8
3
|
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,8 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
+
import Grid from './grid';
|
|
2
3
|
declare const elements: {
|
|
3
|
-
Button:
|
|
4
|
-
|
|
5
|
-
|
|
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
|
-
};
|
|
19
|
-
BaseElement: {
|
|
20
|
-
({ tag, children, ...props }: any): import("react").DetailedReactHTMLElement<import("react").InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>;
|
|
21
|
-
configs: {
|
|
22
|
-
type: string;
|
|
23
|
-
};
|
|
24
|
-
};
|
|
4
|
+
Button: import("react").ForwardRefExoticComponent<Pick<any, string | number | symbol> & import("react").RefAttributes<unknown>>;
|
|
5
|
+
BaseElement: import("react").ForwardRefExoticComponent<Pick<any, string | number | symbol> & import("react").RefAttributes<unknown>>;
|
|
6
|
+
Grid: typeof Grid;
|
|
25
7
|
};
|
|
26
8
|
export default elements;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1 @@
|
|
|
1
|
-
|
|
2
|
-
declare const createRootContext: (configs: WeaverseType) => Weaverse;
|
|
3
|
-
declare const WeaverseRoot: ({ context, defaultData }: {
|
|
4
|
-
context: Weaverse;
|
|
5
|
-
defaultData: any;
|
|
6
|
-
}) => JSX.Element;
|
|
7
|
-
export { createRootContext, WeaverseRoot };
|
|
1
|
+
export { WeaverseRoot, createRootContext } from './renderer';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { Weaverse, WeaverseType } from '@weaverse/core';
|
|
3
|
+
export declare const createRootContext: (configs: WeaverseType) => Weaverse;
|
|
4
|
+
export declare const WeaverseRoot: ({ context, defaultData }: {
|
|
5
|
+
context: Weaverse;
|
|
6
|
+
defaultData: any;
|
|
7
|
+
}) => JSX.Element;
|
|
@@ -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,43 +64,54 @@ 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
|
-
var BaseElement = function
|
|
268
|
-
var
|
|
269
|
-
tag = _ref$tag === void 0 ? 'div' : _ref$tag,
|
|
69
|
+
var BaseElement = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
|
|
70
|
+
var tag = _ref.tag,
|
|
270
71
|
children = _ref.children,
|
|
271
72
|
props = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
272
73
|
|
|
273
|
-
return React__default.createElement(tag, _extends({
|
|
74
|
+
return React__default.createElement(tag, _extends({
|
|
75
|
+
ref: ref
|
|
76
|
+
}, props), children);
|
|
77
|
+
});
|
|
78
|
+
BaseElement.defaultProps = {
|
|
79
|
+
type: 'base',
|
|
80
|
+
tag: 'div',
|
|
81
|
+
style: {}
|
|
274
82
|
};
|
|
275
|
-
|
|
276
|
-
|
|
83
|
+
|
|
84
|
+
function Grid(props) {
|
|
85
|
+
return React__default.createElement("div", Object.assign({}, props));
|
|
86
|
+
}
|
|
87
|
+
Grid.defaultProps = {
|
|
88
|
+
style: {
|
|
89
|
+
display: 'grid',
|
|
90
|
+
gridTemplate: '1fr / 1fr'
|
|
91
|
+
},
|
|
92
|
+
type: 'grid'
|
|
277
93
|
};
|
|
278
94
|
|
|
279
95
|
var elements = {
|
|
280
96
|
Button: Button,
|
|
281
|
-
BaseElement: BaseElement
|
|
97
|
+
BaseElement: BaseElement,
|
|
98
|
+
Grid: Grid
|
|
282
99
|
};
|
|
283
100
|
|
|
284
|
-
var _excluded$1 = ["id", "type", "childIds"];
|
|
285
|
-
|
|
101
|
+
var _excluded$1 = ["id", "type", "childIds", "css", "className"];
|
|
286
102
|
var createRootContext = function createRootContext(configs) {
|
|
287
|
-
var rootContext = new Weaverse(configs);
|
|
103
|
+
var rootContext = new core.Weaverse(configs); // Register the element components
|
|
104
|
+
|
|
288
105
|
Object.keys(elements).forEach(function (key) {
|
|
289
|
-
var _Elements$key, _Elements$key$
|
|
106
|
+
var _Elements$key, _Elements$key$default;
|
|
290
107
|
|
|
291
108
|
// @ts-ignore
|
|
292
|
-
((_Elements$key = elements[key]) == null ? void 0 : (_Elements$key$
|
|
109
|
+
((_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
110
|
});
|
|
294
111
|
return rootContext;
|
|
295
112
|
};
|
|
296
|
-
|
|
297
113
|
var WeaverseRoot = function WeaverseRoot(_ref) {
|
|
298
|
-
var _context$projectData, _context$projectData
|
|
114
|
+
var _context$projectData, _context$projectData$, _context$studioBridge;
|
|
299
115
|
|
|
300
116
|
var context = _ref.context,
|
|
301
117
|
defaultData = _ref.defaultData;
|
|
@@ -305,7 +121,7 @@ var WeaverseRoot = function WeaverseRoot(_ref) {
|
|
|
305
121
|
|
|
306
122
|
React.useEffect(function () {
|
|
307
123
|
var handleUpdate = function handleUpdate() {
|
|
308
|
-
setData(context.projectData);
|
|
124
|
+
setData(_extends({}, context.projectData));
|
|
309
125
|
};
|
|
310
126
|
|
|
311
127
|
context.subscribe(handleUpdate);
|
|
@@ -320,10 +136,12 @@ var WeaverseRoot = function WeaverseRoot(_ref) {
|
|
|
320
136
|
context.initItemData();
|
|
321
137
|
}
|
|
322
138
|
|
|
323
|
-
|
|
139
|
+
var handleProps = (context == null ? void 0 : (_context$studioBridge = context.studioBridge) == null ? void 0 : _context$studioBridge.handleProps) || {};
|
|
140
|
+
console.log('handleProps', handleProps);
|
|
141
|
+
return React.createElement("div", Object.assign({}, handleProps), React.createElement(RenderItem, {
|
|
324
142
|
itemId: 0,
|
|
325
143
|
context: context
|
|
326
|
-
});
|
|
144
|
+
}));
|
|
327
145
|
};
|
|
328
146
|
|
|
329
147
|
var Item = function Item(_ref2) {
|
|
@@ -338,6 +156,8 @@ var Item = function Item(_ref2) {
|
|
|
338
156
|
var id = data.id,
|
|
339
157
|
type = data.type,
|
|
340
158
|
childIds = data.childIds,
|
|
159
|
+
css = data.css,
|
|
160
|
+
className = data.className,
|
|
341
161
|
rest = _objectWithoutPropertiesLoose(data, _excluded$1);
|
|
342
162
|
|
|
343
163
|
React.useEffect(function () {
|
|
@@ -346,17 +166,40 @@ var Item = function Item(_ref2) {
|
|
|
346
166
|
};
|
|
347
167
|
|
|
348
168
|
itemInstance.subscribe(handleUpdate);
|
|
169
|
+
|
|
170
|
+
if (!itemInstance.ref.current && core.isBrowser) {
|
|
171
|
+
Object.assign(itemInstance.ref, {
|
|
172
|
+
current: document.querySelector("[data-wv-id=\"" + id + "\"]")
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
|
|
349
176
|
return function () {
|
|
350
177
|
itemInstance.unsubscribe(handleUpdate);
|
|
351
178
|
};
|
|
352
179
|
}, []);
|
|
180
|
+
var realClassName = className || '';
|
|
181
|
+
|
|
182
|
+
if (css) {
|
|
183
|
+
// let stitches create the style from css object and
|
|
184
|
+
// then return the classname, so we can use it in the render
|
|
185
|
+
var selector = context.stitchesInstance.css(css)().className;
|
|
186
|
+
realClassName += ' ' + selector;
|
|
187
|
+
}
|
|
188
|
+
|
|
353
189
|
var Component = elementInstances.get(type);
|
|
354
190
|
|
|
355
191
|
if (Component) {
|
|
192
|
+
// @ts-ignore
|
|
193
|
+
if (Component.$$typeof === Symbol["for"]('react.forward_ref')) {
|
|
194
|
+
rest.ref = itemInstance.ref;
|
|
195
|
+
}
|
|
196
|
+
|
|
356
197
|
return React.createElement(Component, Object.assign({
|
|
357
198
|
key: id,
|
|
358
199
|
"data-wv-id": id
|
|
359
|
-
}, rest
|
|
200
|
+
}, rest, {
|
|
201
|
+
className: realClassName
|
|
202
|
+
}), Array.isArray(childIds) && childIds.map(function (childId) {
|
|
360
203
|
return React.createElement(RenderItem, {
|
|
361
204
|
key: childId,
|
|
362
205
|
itemId: childId,
|
|
@@ -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/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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"}
|
|
@@ -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 s=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)}));s.defaultProps={style:{backgroundColor:"green",borderRadius:"9999px",fontSize:"13px",padding:"10px 15px"},type:"button",tag:"button"};var o=["tag","children"],u=r.forwardRef((function(e,t){var n=e.tag,s=e.children,u=c(e,o);return r.createElement(n,a({ref:t},u),s)}));function i(e){return r.createElement("div",Object.assign({},e))}u.defaultProps={type:"base",tag:"div",style:{}},i.defaultProps={style:{display:"grid",gridTemplate:"1fr / 1fr"},type:"grid"};var l={Button:s,BaseElement:u,Grid:i},f=["id","type","childIds","css","className"],d=function(e){var r=e.itemInstance,s=e.elementInstances,o=e.context,u=t.useState(r.data),i=u[0],l=u[1],d=i.id,m=i.type,v=i.childIds,b=i.css,g=i.className,y=c(i,f);t.useEffect((function(){var e=function(e){l(a({},e))};return r.subscribe(e),!r.ref.current&&n.isBrowser&&Object.assign(r.ref,{current:document.querySelector('[data-wv-id="'+d+'"]')}),function(){r.unsubscribe(e)}}),[]);var j=g||"";b&&(j+=" "+o.stitchesInstance.css(b)().className);var x=s.get(m);return x?(x.$$typeof===Symbol.for("react.forward_ref")&&(y.ref=r.ref),t.createElement(x,Object.assign({key:d,"data-wv-id":d},y,{className:j}),Array.isArray(v)&&v.map((function(e){return t.createElement(p,{key:e,itemId:e,context:o})})))):null},p=function(e){var r=e.context,n=r.elementInstances,a=r.itemInstances.get(e.itemId);return a?t.createElement(d,{itemInstance:a,elementInstances:n,context:r}):t.createElement(t.Fragment,null)};exports.WeaverseRoot=function(e){var r,n,c,s=e.context,o=e.defaultData,u=t.useState(s.projectData)[1];t.useEffect((function(){var e=function(){u(a({},s.projectData))};return s.subscribe(e),s.updateProjectData(),function(){s.unsubscribe(e)}}),[]),null!=(r=s.projectData)&&null!=(n=r.items)&&n.length||!o||(s.projectData=o,s.initItemData());var i=(null==s||null==(c=s.studioBridge)?void 0:c.handleProps)||{};return console.log("handleProps",i),t.createElement("div",Object.assign({},i),t.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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-react.cjs.production.min.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","items","Set","e","data","_e$data","type","_e$data$type","startsWith","_this","isEditor","payload","background","instance","itemInstances","get","itemId","setData","style","this","init","registerElement","name","element","elementInstances","set","subscribeMessageEvent","subscribe","fn","listeners","add","unsubscribe","triggerUpdate","forEach","triggerEditorUpdate","fetchProjectData","fetch","then","r","json","updateProjectData","_this2","initItemData","err","console","error","currentFrameSubscription","addEventListener","handleMessageEvent","removeEventListener","_this3","top","postMessage","item","itemStore","_this4","id","WeaverseItemStore","itemData","weaverse","_this5","Object","assign","Component","Button","props","React","count","setCount","onClick","defaultProps","backgroundColor","borderRadius","fontSize","padding","tag","configs","BaseElement","children","createElement","elements","Item","itemInstance","context","childIds","rest","useEffect","handleUpdate","update","key","Array","isArray","map","childId","RenderItem","defaultData","_context$projectData","_context$projectData$","length","rootContext","keys","Elements"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sdk-react.cjs.production.min.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","Item","itemInstance","elementInstances","context","data","setData","id","childIds","css","className","rest","handleUpdate","update","subscribe","current","isBrowser","Object","assign","document","querySelector","unsubscribe","realClassName","stitchesInstance","Component","get","$$typeof","Symbol","key","Array","isArray","map","childId","RenderItem","itemId","itemInstances","defaultData","projectData","updateProjectData","_context$projectData","items","_context$projectData$","length","initItemData","handleProps","studioBridge","console","log","configs","rootContext","Weaverse","keys","Elements","forEach","registerElement"],"mappings":"mgBAEO,IAAMA,EAASC,cAAiB,SAACC,EAAYC,SAC1BF,WAAe,GAAlCG,OAAOC,cACLJ,wCAAQE,IAAKA,GAASD,GAAOI,QAAS,kBAAMD,EAASD,EAAQ,qBAAiBA,MAGvFJ,EAAOO,aAAe,CAClBC,MAAO,CACHC,gBAAiB,QACjBC,aAAc,SACdC,SAAU,OACVC,QAAS,aAEbC,KAAM,SACNC,IAAK,mCCbIC,EAAcd,EAAMe,YAAY,WAAiCb,OAA/BW,IAAAA,IAAKG,IAAAA,SAAaf,gBACxDD,EAAMiB,cAAcJ,KACzBX,IAAAA,GACGD,GACFe,eCJmBE,EAAKjB,UACpBD,uCAASC,IDMlBa,EAAYR,aAAe,CACzBM,KAAM,OACNC,IAAK,MACLN,MAAO,ICNTW,EAAKZ,aAAe,CAClBC,MAAO,CACLY,QAAS,OACTC,aAAc,aAEhBR,KAAM,YCPFS,EAAW,CACftB,OAAAA,EACAe,YAAAA,EACAI,KAAAA,gDCsCII,EAAO,gBAAEC,IAAAA,aAAcC,IAAAA,iBAAkBC,IAAAA,UACvBzB,WAAoBuB,EAAaG,MAAlDA,OAAMC,OACNC,EAA+CF,EAA/CE,GAAIhB,EAA2Cc,EAA3Cd,KAAMiB,EAAqCH,EAArCG,SAAUC,EAA2BJ,EAA3BI,IAAKC,EAAsBL,EAAtBK,UAAcC,IAAQN,KACpD1B,aAAgB,eACViC,EAAe,SAACC,GAClBP,OAAYO,YAEdX,EAAaY,UAAUF,IAClBV,EAAarB,IAAIkC,SAAWC,aAC/BC,OAAOC,OAAOhB,EAAarB,IAAK,CAACkC,QAASI,SAASC,8BAA8Bb,UAG5E,WACLL,EAAamB,YAAYT,MAE1B,QAECU,EAAgBZ,GAAa,GAC7BD,IAKFa,GAAiB,IADDlB,EAAQmB,iBAAiBd,IAAIA,EAA7BL,GAAqCM,eAGnDc,EAAYrB,EAAiBsB,IAAIlC,UACjCiC,GAEEA,EAAUE,WAAaC,WAAW,uBACpChB,EAAK9B,IAAMqB,EAAarB,KAEnBF,gBAAC6C,iBAAUI,IAAKrB,eAAgBA,GAAQI,GAAMD,UAAWY,IAC7DO,MAAMC,QAAQtB,IACJA,EAASuB,KAAI,SAAAC,UACRrD,gBAACsD,GACOL,IAAKI,EACLE,OAAQF,EACR5B,QAASA,SAK9B,MAGH6B,EAAa,gBAAU7B,IAAAA,QACPD,EAAoBC,EAApBD,iBAChBD,EADoCE,EAAnC+B,cAC4BV,MAFdS,eAGfhC,EACKvB,gBAACsB,GAAKC,aAAcA,EAAcC,iBAAkBA,EAAkBC,QAASA,IAEjFzB,uDAlFmB,sBAAEyB,IAAAA,QAASgC,IAAAA,YAC9B9B,EAAW3B,WAAoByB,EAAQiC,gBAC9C1D,aAAgB,eACViC,EAAe,WACjBN,OAAYF,EAAQiC,sBAEtBjC,EAAQU,UAAUF,GAClBR,EAAQkC,oBACD,WACLlC,EAAQiB,YAAYT,MAErB,aACER,EAAQiC,uBAARE,EAAqBC,QAArBC,EAA4BC,SAAUN,IACzChC,EAAQiC,YAAcD,EACtBhC,EAAQuC,oBAENC,SAAcxC,YAAAA,EAASyC,uBAAcD,cAAe,UACxDE,QAAQC,IAAI,cAAeH,GACpBjE,uCAASiE,GACdjE,gBAACsD,GAAWC,OAAQ,EAAG9B,QAASA,gCA7BH,SAAC4C,OAC1BC,EAAc,IAAIC,WAASF,UAEjC/B,OAAOkC,KAAKC,GAAUC,SAAQ,SAAAzB,qBAE5BwB,EAASxB,gBAAM3C,uBAAcM,OAAQ0D,EAAYK,gBAAgBF,EAASxB,GAAK3C,aAAaM,KAAM6D,EAASxB,OAEtGqB"}
|