@weaverse/react 0.1.4 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ export declare const BaseElement: {
3
+ ({ tag, children, ...props }: any): React.DetailedReactHTMLElement<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>;
4
+ defaultProps: {
5
+ type: string;
6
+ tag: string;
7
+ };
8
+ };
9
+ export default BaseElement;
@@ -0,0 +1,3 @@
1
+ import * as React from 'react';
2
+ export declare const Button: React.ForwardRefExoticComponent<Pick<any, string | number | symbol> & React.RefAttributes<unknown>>;
3
+ export default Button;
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ declare function Grid(props: any): JSX.Element;
3
+ declare namespace Grid {
4
+ var defaultProps: {
5
+ style: {};
6
+ type: string;
7
+ };
8
+ }
9
+ export default Grid;
@@ -0,0 +1,14 @@
1
+ /// <reference types="react" />
2
+ import Grid from './grid';
3
+ declare const elements: {
4
+ Button: import("react").ForwardRefExoticComponent<Pick<any, string | number | symbol> & import("react").RefAttributes<unknown>>;
5
+ BaseElement: {
6
+ ({ tag, children, ...props }: any): import("react").DetailedReactHTMLElement<import("react").InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>;
7
+ defaultProps: {
8
+ type: string;
9
+ tag: string;
10
+ };
11
+ };
12
+ Grid: typeof Grid;
13
+ };
14
+ export default elements;
package/dist/index.d.ts CHANGED
@@ -1,6 +1,8 @@
1
- import { Weaverse } from './core';
1
+ /// <reference types="react" />
2
+ import { Weaverse, WeaverseType } from '@weaverse/core';
3
+ declare const createRootContext: (configs: WeaverseType) => Weaverse;
2
4
  declare const WeaverseRoot: ({ context, defaultData }: {
3
5
  context: Weaverse;
4
6
  defaultData: any;
5
7
  }) => JSX.Element;
6
- export { Weaverse, WeaverseRoot };
8
+ export { createRootContext, WeaverseRoot };
@@ -5,8 +5,8 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
6
6
 
7
7
  var React = require('react');
8
- var fetch = _interopDefault(require('isomorphic-unfetch'));
9
- var Elements = _interopDefault(require('@weaverse/elements'));
8
+ var React__default = _interopDefault(React);
9
+ var core = require('@weaverse/core');
10
10
 
11
11
  function _extends() {
12
12
  _extends = Object.assign || function (target) {
@@ -41,239 +41,96 @@ function _objectWithoutPropertiesLoose(source, excluded) {
41
41
  return target;
42
42
  }
43
43
 
44
- var isReactNative = typeof navigator === 'object' && navigator.product === 'ReactNative';
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
- var _this2 = this;
111
-
112
- Object.keys(Elements).forEach(function (key) {
113
- var _Elements$key, _Elements$key$configs;
114
-
115
- // @ts-ignore
116
- ((_Elements$key = Elements[key]) == null ? void 0 : (_Elements$key$configs = _Elements$key.configs) == null ? void 0 : _Elements$key$configs.type) && _this2.registerElement(Elements[key].configs.type, Elements[key]);
117
- });
118
- this.subscribeMessageEvent();
119
- };
120
-
121
- _proto.subscribe = function subscribe(fn) {
122
- this.listeners.add(fn);
123
- };
124
-
125
- _proto.unsubscribe = function unsubscribe(fn) {
126
- this.listeners["delete"](fn);
127
- };
44
+ var Button = /*#__PURE__*/React.forwardRef(function (props, ref) {
45
+ var _React$useState = React.useState(0),
46
+ count = _React$useState[0],
47
+ setCount = _React$useState[1];
128
48
 
129
- _proto.triggerUpdate = function triggerUpdate() {
130
- this.listeners.forEach(function (fn) {
131
- return fn();
132
- });
133
- this.triggerEditorUpdate();
134
- };
135
-
136
- _proto.fetchProjectData = function fetchProjectData() {
137
- return fetch(this.appUrl + ("/api/public/" + this.projectKey)).then(function (r) {
138
- return r.json();
139
- });
140
- };
141
-
142
- _proto.updateProjectData = function updateProjectData() {
143
- var _this3 = this;
144
-
145
- if (this.projectKey) {
146
- this.fetchProjectData().then(function (data) {
147
- if (data) {
148
- _this3.projectData = data;
149
-
150
- _this3.initItemData();
151
-
152
- _this3.triggerUpdate();
153
- }
154
- })["catch"](function (err) {
155
- console.error(err);
156
- });
49
+ return React.createElement("button", Object.assign({
50
+ ref: ref
51
+ }, props, {
52
+ onClick: function onClick() {
53
+ return setCount(count + 1);
157
54
  }
158
- };
159
-
160
- _proto.subscribeMessageEvent = function subscribeMessageEvent() {
161
- var _this4 = this;
162
-
163
- if (typeof this.currentFrameSubscription === 'function') {
164
- this.currentFrameSubscription();
165
- }
166
-
167
- isBrowser && window.addEventListener('message', this.handleMessageEvent);
168
-
169
- this.currentFrameSubscription = function () {
170
- isBrowser && window.removeEventListener('message', _this4.handleMessageEvent);
171
- };
172
-
173
- return this.currentFrameSubscription;
174
- };
175
-
176
- _proto.triggerEditorUpdate = function triggerEditorUpdate(type) {
177
- if (type === void 0) {
178
- type = 'weaverse.workspace.init';
179
- }
180
-
181
- if (this.isEditor) {
182
- var _window$top;
183
-
184
- (_window$top = window.top) == null ? void 0 : _window$top.postMessage({
185
- type: type,
186
- payload: {
187
- projectKey: this.projectKey,
188
- projectData: this.projectData
189
- }
190
- }, '*');
191
- }
192
- };
193
-
194
- _proto.initItemData = function initItemData() {
195
- var _this5 = this;
196
-
197
- var data = this.projectData;
198
-
199
- if (data.items) {
200
- data.items.forEach(function (item) {
201
- var itemStore = _this5.itemInstances.get(item.id) || new WeaverseItemStore(item, _this5);
202
-
203
- _this5.itemInstances.set(item.id, itemStore);
204
- });
205
- }
206
- };
207
-
208
- return Weaverse;
209
- }();
210
- var WeaverseItemStore = function WeaverseItemStore(itemData, weaverse) {
211
- var _this6 = this;
212
-
213
- if (itemData === void 0) {
214
- itemData = {};
215
- }
216
-
217
- this.data = {};
218
- this.listeners = new Set();
55
+ }), "Test Button ", count);
56
+ });
57
+ Button.defaultProps = {
58
+ style: {
59
+ backgroundColor: 'green',
60
+ borderRadius: '9999px',
61
+ fontSize: '13px',
62
+ padding: '10px 15px'
63
+ },
64
+ type: 'button',
65
+ tag: 'button'
66
+ };
219
67
 
220
- this.setData = function (data) {
221
- _this6.data = Object.assign(_this6.data, data);
68
+ var _excluded = ["tag", "children"];
69
+ var BaseElement = function BaseElement(_ref) {
70
+ var tag = _ref.tag,
71
+ children = _ref.children,
72
+ props = _objectWithoutPropertiesLoose(_ref, _excluded);
222
73
 
223
- _this6.triggerUpdate();
224
- };
74
+ return React__default.createElement(tag, _extends({}, props), children);
75
+ };
76
+ BaseElement.defaultProps = {
77
+ type: 'base',
78
+ tag: 'div'
79
+ };
225
80
 
226
- this.subscribe = function (fn) {
227
- _this6.listeners.add(fn);
228
- };
81
+ function Grid(props) {
82
+ return React__default.createElement("div", Object.assign({}, props));
83
+ }
84
+ Grid.defaultProps = {
85
+ style: {// display: 'grid',
86
+ // outline: '1px solid red',
87
+ },
88
+ type: 'grid'
89
+ };
229
90
 
230
- this.unsubscribe = function (fn) {
231
- _this6.listeners["delete"](fn);
232
- };
91
+ var elements = {
92
+ Button: Button,
93
+ BaseElement: BaseElement,
94
+ Grid: Grid
95
+ };
233
96
 
234
- this.triggerUpdate = function () {
235
- _this6.listeners.forEach(function (fn) {
236
- return fn(_this6.data);
237
- });
238
- };
97
+ var _excluded$1 = ["id", "type", "childIds", "css", "className"];
239
98
 
240
- this.useSubscription = function (fn) {
241
- React.useEffect(function () {
242
- _this6.subscribe(fn);
99
+ var createRootContext = function createRootContext(configs) {
100
+ var rootContext = new core.Weaverse(configs); // Register the element components
243
101
 
244
- return function () {
245
- _this6.unsubscribe(fn);
246
- };
247
- }, []);
248
- };
102
+ Object.keys(elements).forEach(function (key) {
103
+ var _Elements$key, _Elements$key$default;
249
104
 
250
- this.data = itemData;
251
- var _itemData = itemData,
252
- type = _itemData.type;
253
-
254
- if (type) {
255
- this.Component = weaverse.elementInstances.get(type);
256
- }
105
+ // @ts-ignore
106
+ ((_Elements$key = elements[key]) == null ? void 0 : (_Elements$key$default = _Elements$key.defaultProps) == null ? void 0 : _Elements$key$default.type) && rootContext.registerElement(elements[key].defaultProps.type, elements[key]);
107
+ });
108
+ return rootContext;
257
109
  };
258
110
 
259
- var _excluded = ["id", "type", "childIds"];
260
-
261
111
  var WeaverseRoot = function WeaverseRoot(_ref) {
262
- var _context$projectData, _context$projectData$;
112
+ var _context$projectData, _context$projectData$, _context$studioBridge;
263
113
 
264
114
  var context = _ref.context,
265
115
  defaultData = _ref.defaultData;
266
116
 
267
- var _React$useState = React.useState(context.projectData),
268
- setData = _React$useState[1];
117
+ var _useState = React.useState(context.projectData),
118
+ setData = _useState[1];
269
119
 
270
120
  React.useEffect(function () {
271
121
  var handleUpdate = function handleUpdate() {
272
- setData(context.projectData);
122
+ setData(_extends({}, context.projectData));
273
123
  };
274
124
 
275
125
  context.subscribe(handleUpdate);
276
126
  context.updateProjectData();
127
+ var shouldRenderStudio = context.loadStudio();
128
+ console.log('shouldRenderStudio', shouldRenderStudio);
129
+
130
+ if (shouldRenderStudio) {
131
+ handleUpdate();
132
+ }
133
+
277
134
  return function () {
278
135
  context.unsubscribe(handleUpdate);
279
136
  };
@@ -284,10 +141,12 @@ var WeaverseRoot = function WeaverseRoot(_ref) {
284
141
  context.initItemData();
285
142
  }
286
143
 
287
- return React.createElement(RenderItem, {
144
+ var handleProps = (context == null ? void 0 : (_context$studioBridge = context.studioBridge) == null ? void 0 : _context$studioBridge.handleProps) || {};
145
+ console.log('handleProps', handleProps);
146
+ return React__default.createElement("div", Object.assign({}, handleProps), React__default.createElement(RenderItem, {
288
147
  itemId: 0,
289
148
  context: context
290
- });
149
+ }));
291
150
  };
292
151
 
293
152
  var Item = function Item(_ref2) {
@@ -295,28 +154,58 @@ var Item = function Item(_ref2) {
295
154
  elementInstances = _ref2.elementInstances,
296
155
  context = _ref2.context;
297
156
 
298
- var _React$useState2 = React.useState(itemInstance.data),
299
- data = _React$useState2[0],
300
- setData = _React$useState2[1];
157
+ var _useState2 = React.useState(itemInstance.data),
158
+ data = _useState2[0],
159
+ setData = _useState2[1];
301
160
 
302
161
  var id = data.id,
303
162
  type = data.type,
304
163
  childIds = data.childIds,
305
- rest = _objectWithoutPropertiesLoose(data, _excluded);
164
+ css = data.css,
165
+ className = data.className,
166
+ rest = _objectWithoutPropertiesLoose(data, _excluded$1);
167
+
168
+ React.useEffect(function () {
169
+ var handleUpdate = function handleUpdate(update) {
170
+ setData(_extends({}, update));
171
+ };
172
+
173
+ itemInstance.subscribe(handleUpdate);
174
+
175
+ if (!itemInstance.ref.current && core.isBrowser) {
176
+ Object.assign(itemInstance.ref, {
177
+ current: document.querySelector("[data-wv-id=\"" + id + "\"]")
178
+ });
179
+ }
180
+
181
+ return function () {
182
+ itemInstance.unsubscribe(handleUpdate);
183
+ };
184
+ }, []);
185
+ var realClassName = className || '';
186
+
187
+ if (css) {
188
+ // let stitches create the style from css object and
189
+ // then return the classname, so we can use it in the render
190
+ var selector = context.stitchesInstance.css(css)().className;
191
+ realClassName += ' ' + selector;
192
+ }
306
193
 
307
- var useSubscription = itemInstance.useSubscription;
308
- useSubscription(function (update) {
309
- console.log('update', update);
310
- setData(_extends({}, update));
311
- });
312
194
  var Component = elementInstances.get(type);
313
195
 
314
196
  if (Component) {
315
- return React.createElement(Component, Object.assign({
197
+ // @ts-ignore
198
+ if (Component.$$typeof === Symbol["for"]('react.forward_ref')) {
199
+ rest.ref = itemInstance.ref;
200
+ }
201
+
202
+ return React__default.createElement(Component, Object.assign({
316
203
  key: id,
317
204
  "data-wv-id": id
318
- }, rest), Array.isArray(childIds) && childIds.map(function (childId) {
319
- return React.createElement(RenderItem, {
205
+ }, rest, {
206
+ className: realClassName
207
+ }), Array.isArray(childIds) && childIds.map(function (childId) {
208
+ return React__default.createElement(RenderItem, {
320
209
  key: childId,
321
210
  itemId: childId,
322
211
  context: context
@@ -335,16 +224,16 @@ var RenderItem = function RenderItem(_ref3) {
335
224
  var itemInstance = itemInstances.get(itemId);
336
225
 
337
226
  if (itemInstance) {
338
- return React.createElement(Item, {
227
+ return React__default.createElement(Item, {
339
228
  itemInstance: itemInstance,
340
229
  elementInstances: elementInstances,
341
230
  context: context
342
231
  });
343
232
  }
344
233
 
345
- return React.createElement(React.Fragment, null);
234
+ return React__default.createElement(React__default.Fragment, null);
346
235
  };
347
236
 
348
- exports.Weaverse = Weaverse;
349
237
  exports.WeaverseRoot = WeaverseRoot;
238
+ exports.createRootContext = createRootContext;
350
239
  //# sourceMappingURL=sdk-react.cjs.development.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sdk-react.cjs.development.js","sources":["../src/utils/index.ts","../src/core.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 Elements from '@weaverse/elements'\nimport {useEffect} from 'react'\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\nexport class Weaverse {\n\telementInstances = new Map<string, any>()\n\titemInstances = new Map<string | number, WeaverseItemStore>()\n\tappUrl: string = 'http://localhost:3000'\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({\n\t\t\t\t\tappUrl,\n\t\t\t\t\tprojectKey,\n\t\t\t\t\tprojectData\n\t\t\t\t}: { appUrl?: string, projectKey?: string, projectData?: ProjectDataType } = {}) {\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\tObject.keys(Elements).forEach(key => {\n\t\t\t// @ts-ignore\n\t\t\tElements[key]?.configs?.type && this.registerElement(Elements[key].configs.type, Elements[key])\n\t\t})\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\tuseSubscription = (fn: any) => {\n\t\tuseEffect(() => {\n\t\t\tthis.subscribe(fn)\n\t\t\treturn () => {\n\t\t\t\tthis.unsubscribe(fn)\n\t\t\t}\n\t\t}, [])\n\t}\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'\nimport {useEffect} from 'react'\nimport {Weaverse} from './core'\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\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 let {useSubscription} = itemInstance\n useSubscription((update: any) => {\n console.log('update', update)\n setData({...update})\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}\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 {Weaverse, WeaverseRoot}\n"],"names":["isReactNative","navigator","product","isBrowser","window","Weaverse","appUrl","projectKey","projectData","Map","items","Set","e","data","type","startsWith","isEditor","payload","itemId","background","instance","itemInstances","get","setData","style","init","registerElement","name","element","elementInstances","set","Object","keys","Elements","forEach","key","configs","subscribeMessageEvent","subscribe","fn","listeners","add","unsubscribe","triggerUpdate","triggerEditorUpdate","fetchProjectData","fetch","then","r","json","updateProjectData","initItemData","err","console","error","currentFrameSubscription","addEventListener","handleMessageEvent","removeEventListener","top","postMessage","item","itemStore","id","WeaverseItemStore","itemData","weaverse","assign","useEffect","Component","WeaverseRoot","context","defaultData","React","handleUpdate","length","RenderItem","Item","itemInstance","childIds","rest","useSubscription","update","log","Array","isArray","map","childId"],"mappings":"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"}
1
+ {"version":3,"file":"sdk-react.cjs.development.js","sources":["../src/elements/button.tsx","../src/elements/base.tsx","../src/elements/grid.tsx","../src/elements/index.ts","../src/index.tsx"],"sourcesContent":["import * as React from 'react'\n\nexport const Button = React.forwardRef((props: any, ref) => {\n let [count, setCount] = React.useState(0)\n return <button ref={ref} {...props} onClick={() => setCount(count + 1)}>Test Button {count}</button>\n})\n\nButton.defaultProps = {\n style: {\n backgroundColor: 'green',\n borderRadius: '9999px',\n fontSize: '13px',\n padding: '10px 15px'\n },\n type: 'button',\n tag: 'button'\n}\n\nexport default Button","import React from 'react'\n\nexport const BaseElement = ({tag, children, ...props}: any) => {\n return React.createElement(tag, {\n ...props\n }, children)\n}\n\nBaseElement.defaultProps = {\n type: 'base',\n tag: 'div'\n}\nexport default BaseElement\n","import React from 'react'\n\nexport default function Grid(props: any) {\n return <div {...props} />\n}\n\nGrid.defaultProps = {\n style: {\n // display: 'grid',\n // outline: '1px solid red',\n },\n type: 'grid'\n}","import Button from './button'\nimport BaseElement from './base'\nimport Grid from './grid'\n\nconst elements = {\n Button,\n BaseElement,\n Grid\n}\nexport default elements","import React, {FC, useEffect, useState} from 'react'\nimport {isBrowser, Weaverse, WeaverseItemStore, WeaverseType} from '@weaverse/core'\nimport Elements from './elements'\n\n\nconst createRootContext = (configs: WeaverseType) => {\n const rootContext = new Weaverse(configs)\n // Register the element components\n Object.keys(Elements).forEach(key => {\n // @ts-ignore\n Elements[key]?.defaultProps?.type && rootContext.registerElement(Elements[key].defaultProps.type, Elements[key])\n })\n\n return rootContext\n}\n\nconst WeaverseRoot = ({context, defaultData}: { context: Weaverse, defaultData: any }) => {\n let [, setData] = useState<any>(context.projectData)\n useEffect(() => {\n let handleUpdate = () => {\n setData({...context.projectData})\n }\n context.subscribe(handleUpdate)\n context.updateProjectData()\n let shouldRenderStudio = context.loadStudio()\n console.log('shouldRenderStudio', shouldRenderStudio)\n if (shouldRenderStudio) {\n handleUpdate()\n }\n return () => {\n context.unsubscribe(handleUpdate)\n }\n }, [])\n if (!context.projectData?.items?.length && defaultData) {\n context.projectData = defaultData\n context.initItemData()\n }\n let handleProps = context?.studioBridge?.handleProps || {}\n console.log('handleProps', handleProps)\n return <div {...handleProps}>\n <RenderItem itemId={0} context={context}/>\n </div>\n}\n\ntype ItemProps = {\n itemInstance: WeaverseItemStore\n elementInstances: Map<string, FC>\n context: Weaverse\n}\n\n\nconst Item = ({itemInstance, elementInstances, context}: ItemProps) => {\n let [data, setData] = useState<any>(itemInstance.data)\n let {id, type, childIds, css, className, ...rest} = data\n useEffect(() => {\n let handleUpdate = (update: any) => {\n setData({...update})\n }\n itemInstance.subscribe(handleUpdate)\n if (!itemInstance.ref.current && isBrowser) {\n Object.assign(itemInstance.ref, {current: document.querySelector(`[data-wv-id=\"${id}\"]`)})\n }\n\n return () => {\n itemInstance.unsubscribe(handleUpdate)\n }\n }, [])\n\n let realClassName = className || ''\n if (css) {\n\n // let stitches create the style from css object and\n // then return the classname, so we can use it in the render\n let selector = (context.stitchesInstance.css(css)()).className\n\n realClassName += ' ' + selector\n }\n let Component = elementInstances.get(type)\n if (Component) {\n // @ts-ignore\n if (Component.$$typeof === Symbol.for('react.forward_ref')) {\n rest.ref = itemInstance.ref\n }\n return <Component key={id} data-wv-id={id} {...rest} className={realClassName}>\n {Array.isArray(childIds)\n && childIds.map(childId =>\n <RenderItem\n key={childId}\n itemId={childId}\n context={context}\n />\n )}\n </Component>\n }\n return null\n}\n\nconst RenderItem = ({itemId, context}: { itemId: number, context: any }): any => {\n let {itemInstances, elementInstances} = context\n let itemInstance = itemInstances.get(itemId)\n if (itemInstance) {\n return <Item itemInstance={itemInstance} elementInstances={elementInstances} context={context}/>\n }\n return <></>\n}\n\nexport {createRootContext, WeaverseRoot}\n"],"names":["Button","React","props","ref","count","setCount","onClick","defaultProps","style","backgroundColor","borderRadius","fontSize","padding","type","tag","BaseElement","children","createElement","Grid","elements","createRootContext","configs","rootContext","Weaverse","Object","keys","Elements","forEach","key","registerElement","WeaverseRoot","context","defaultData","useState","projectData","setData","useEffect","handleUpdate","subscribe","updateProjectData","shouldRenderStudio","loadStudio","console","log","unsubscribe","items","length","initItemData","handleProps","studioBridge","RenderItem","itemId","Item","itemInstance","elementInstances","data","id","childIds","css","className","rest","update","current","isBrowser","assign","document","querySelector","realClassName","selector","stitchesInstance","Component","get","$$typeof","Symbol","Array","isArray","map","childId","itemInstances"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEO,IAAMA,MAAM,gBAAGC,gBAAA,CAAiB,UAACC,KAAD,EAAaC,GAAb;AACrC,wBAAwBF,cAAA,CAAe,CAAf,CAAxB;AAAA,MAAKG,KAAL;AAAA,MAAYC,QAAZ;;AACA,SAAOJ,mBAAA,SAAA;AAAQE,IAAAA,GAAG,EAAEA;KAASD;AAAOI,IAAAA,OAAO,EAAE;AAAA,aAAMD,QAAQ,CAACD,KAAK,GAAG,CAAT,CAAd;AAAA;IAAtC,gBAAA,EAA8EA,KAA9E,CAAP;AACD,CAHqB,CAAf;AAKPJ,MAAM,CAACO,YAAP,GAAsB;AAClBC,EAAAA,KAAK,EAAE;AACHC,IAAAA,eAAe,EAAE,OADd;AAEHC,IAAAA,YAAY,EAAE,QAFX;AAGHC,IAAAA,QAAQ,EAAE,MAHP;AAIHC,IAAAA,OAAO,EAAE;AAJN,GADW;AAOlBC,EAAAA,IAAI,EAAE,QAPY;AAQlBC,EAAAA,GAAG,EAAE;AARa,CAAtB;;;ACPA,AAEO,IAAMC,WAAW,GAAG,SAAdA,WAAc;MAAED,WAAAA;MAAKE,gBAAAA;MAAad;;AAC7C,SAAOD,cAAK,CAACgB,aAAN,CAAoBH,GAApB,eACFZ,KADE,GAEJc,QAFI,CAAP;AAGD,CAJM;AAMPD,WAAW,CAACR,YAAZ,GAA2B;AACzBM,EAAAA,IAAI,EAAE,MADmB;AAEzBC,EAAAA,GAAG,EAAE;AAFoB,CAA3B;;SCNwBI,KAAKhB;AAC3B,SAAOD,4BAAA,MAAA,oBAASC,MAAT,CAAP;AACD;AAEDgB,IAAI,CAACX,YAAL,GAAoB;AAClBC,EAAAA,KAAK,EAAE;AAEL;AAFK,GADW;AAKlBK,EAAAA,IAAI,EAAE;AALY,CAApB;;ACFA,IAAMM,QAAQ,GAAG;AACfnB,EAAAA,MAAM,EAANA,MADe;AAEfe,EAAAA,WAAW,EAAXA,WAFe;AAGfG,EAAAA,IAAI,EAAJA;AAHe,CAAjB;;;ACJA;AAKA,IAAME,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,OAAD;AACxB,MAAMC,WAAW,GAAG,IAAIC,aAAJ,CAAaF,OAAb,CAApB;;AAEAG,EAAAA,MAAM,CAACC,IAAP,CAAYC,QAAZ,EAAsBC,OAAtB,CAA8B,UAAAC,GAAG;;;AAC/B;AACA,sBAAAF,QAAQ,CAACE,GAAD,CAAR,4DAAerB,YAAf,2CAA6BM,IAA7B,KAAqCS,WAAW,CAACO,eAAZ,CAA4BH,QAAQ,CAACE,GAAD,CAAR,CAAcrB,YAAd,CAA2BM,IAAvD,EAA6Da,QAAQ,CAACE,GAAD,CAArE,CAArC;AACD,GAHD;AAKA,SAAON,WAAP;AACD,CATD;;AAWA,IAAMQ,YAAY,GAAG,SAAfA,YAAe;;;MAAEC,eAAAA;MAASC,mBAAAA;;AAC9B,kBAAkBC,cAAQ,CAAMF,OAAO,CAACG,WAAd,CAA1B;AAAA,MAAOC,OAAP;;AACAC,EAAAA,eAAS,CAAC;AACR,QAAIC,YAAY,GAAG,SAAfA,YAAe;AACjBF,MAAAA,OAAO,cAAKJ,OAAO,CAACG,WAAb,EAAP;AACD,KAFD;;AAGAH,IAAAA,OAAO,CAACO,SAAR,CAAkBD,YAAlB;AACAN,IAAAA,OAAO,CAACQ,iBAAR;AACA,QAAIC,kBAAkB,GAAGT,OAAO,CAACU,UAAR,EAAzB;AACAC,IAAAA,OAAO,CAACC,GAAR,CAAY,oBAAZ,EAAkCH,kBAAlC;;AACA,QAAIA,kBAAJ,EAAwB;AACtBH,MAAAA,YAAY;AACb;;AACD,WAAO;AACLN,MAAAA,OAAO,CAACa,WAAR,CAAoBP,YAApB;AACD,KAFD;AAGD,GAdQ,EAcN,EAdM,CAAT;;AAeA,MAAI,0BAACN,OAAO,CAACG,WAAT,sCAAC,qBAAqBW,KAAtB,aAAC,sBAA4BC,MAA7B,KAAuCd,WAA3C,EAAwD;AACtDD,IAAAA,OAAO,CAACG,WAAR,GAAsBF,WAAtB;AACAD,IAAAA,OAAO,CAACgB,YAAR;AACD;;AACD,MAAIC,WAAW,GAAG,CAAAjB,OAAO,QAAP,qCAAAA,OAAO,CAAEkB,YAAT,2CAAuBD,WAAvB,KAAsC,EAAxD;AACAN,EAAAA,OAAO,CAACC,GAAR,CAAY,aAAZ,EAA2BK,WAA3B;AACA,SAAO/C,4BAAA,MAAA,oBAAS+C,YAAT,EACL/C,4BAAA,CAACiD,UAAD;AAAYC,IAAAA,MAAM,EAAE;AAAGpB,IAAAA,OAAO,EAAEA;GAAhC,CADK,CAAP;AAGD,CA1BD;;AAmCA,IAAMqB,IAAI,GAAG,SAAPA,IAAO;MAAEC,qBAAAA;MAAcC,yBAAAA;MAAkBvB,gBAAAA;;AAC7C,mBAAsBE,cAAQ,CAAMoB,YAAY,CAACE,IAAnB,CAA9B;AAAA,MAAKA,IAAL;AAAA,MAAWpB,OAAX;;AACA,MAAKqB,EAAL,GAAoDD,IAApD,CAAKC,EAAL;AAAA,MAAS3C,IAAT,GAAoD0C,IAApD,CAAS1C,IAAT;AAAA,MAAe4C,QAAf,GAAoDF,IAApD,CAAeE,QAAf;AAAA,MAAyBC,GAAzB,GAAoDH,IAApD,CAAyBG,GAAzB;AAAA,MAA8BC,SAA9B,GAAoDJ,IAApD,CAA8BI,SAA9B;AAAA,MAA4CC,IAA5C,iCAAoDL,IAApD;;AACAnB,EAAAA,eAAS,CAAC;AACR,QAAIC,YAAY,GAAG,SAAfA,YAAe,CAACwB,MAAD;AACjB1B,MAAAA,OAAO,cAAK0B,MAAL,EAAP;AACD,KAFD;;AAGAR,IAAAA,YAAY,CAACf,SAAb,CAAuBD,YAAvB;;AACA,QAAI,CAACgB,YAAY,CAAClD,GAAb,CAAiB2D,OAAlB,IAA6BC,cAAjC,EAA4C;AAC1CvC,MAAAA,MAAM,CAACwC,MAAP,CAAcX,YAAY,CAAClD,GAA3B,EAAgC;AAAC2D,QAAAA,OAAO,EAAEG,QAAQ,CAACC,aAAT,oBAAuCV,EAAvC;AAAV,OAAhC;AACD;;AAED,WAAO;AACLH,MAAAA,YAAY,CAACT,WAAb,CAAyBP,YAAzB;AACD,KAFD;AAGD,GAZQ,EAYN,EAZM,CAAT;AAcA,MAAI8B,aAAa,GAAGR,SAAS,IAAI,EAAjC;;AACA,MAAID,GAAJ,EAAS;AAEP;AACA;AACA,QAAIU,QAAQ,GAAIrC,OAAO,CAACsC,gBAAR,CAAyBX,GAAzB,CAA6BA,GAA7B,GAAD,CAAsCC,SAArD;AAEAQ,IAAAA,aAAa,IAAI,MAAMC,QAAvB;AACD;;AACD,MAAIE,SAAS,GAAGhB,gBAAgB,CAACiB,GAAjB,CAAqB1D,IAArB,CAAhB;;AACA,MAAIyD,SAAJ,EAAe;AACb;AACA,QAAIA,SAAS,CAACE,QAAV,KAAuBC,MAAM,OAAN,CAAW,mBAAX,CAA3B,EAA4D;AAC1Db,MAAAA,IAAI,CAACzD,GAAL,GAAWkD,YAAY,CAAClD,GAAxB;AACD;;AACD,WAAOF,4BAAA,CAACqE,SAAD;AAAW1C,MAAAA,GAAG,EAAE4B;oBAAgBA;OAAQI;AAAMD,MAAAA,SAAS,EAAEQ;MAAzD,EACJO,KAAK,CAACC,OAAN,CAAclB,QAAd,KACUA,QAAQ,CAACmB,GAAT,CAAa,UAAAC,OAAO;AAAA,aACf5E,4BAAA,CAACiD,UAAD;AACQtB,QAAAA,GAAG,EAAEiD;AACL1B,QAAAA,MAAM,EAAE0B;AACR9C,QAAAA,OAAO,EAAEA;OAHjB,CADe;AAAA,KAApB,CAFN,CAAP;AAUD;;AACD,SAAO,IAAP;AACD,CA5CD;;AA8CA,IAAMmB,UAAU,GAAG,SAAbA,UAAa;MAAEC,eAAAA;MAAQpB,gBAAAA;AAC3B,MAAK+C,aAAL,GAAwC/C,OAAxC,CAAK+C,aAAL;AAAA,MAAoBxB,gBAApB,GAAwCvB,OAAxC,CAAoBuB,gBAApB;AACA,MAAID,YAAY,GAAGyB,aAAa,CAACP,GAAd,CAAkBpB,MAAlB,CAAnB;;AACA,MAAIE,YAAJ,EAAkB;AAChB,WAAOpD,4BAAA,CAACmD,IAAD;AAAMC,MAAAA,YAAY,EAAEA;AAAcC,MAAAA,gBAAgB,EAAEA;AAAkBvB,MAAAA,OAAO,EAAEA;KAA/E,CAAP;AACD;;AACD,SAAO9B,4BAAA,wBAAA,MAAA,CAAP;AACD,CAPD;;;;;"}
@@ -1,2 +1,2 @@
1
- "use strict";function t(t){return t&&"object"==typeof t&&"default"in t?t.default:t}Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),n=t(require("isomorphic-unfetch")),i=t(require("@weaverse/elements"));function r(){return(r=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t}).apply(this,arguments)}var s="object"==typeof navigator&&"ReactNative"===navigator.product,a="undefined"!=typeof window&&!s,c=function(){function t(t){var e=this,n=void 0===t?{}:t,i=n.appUrl,r=n.projectKey,s=n.projectData;this.elementInstances=new Map,this.itemInstances=new Map,this.appUrl="http://localhost:3000",this.projectKey="",this.projectData={items:[]},this.listeners=new Set,this.isEditor=!1,this.handleMessageEvent=function(t){var n,i;if(null!=(n=t.data)&&null!=(i=n.type)&&i.startsWith("weaverse."))switch(t.data.type){case"weaverse.editor.ready":e.isEditor=!0;break;case"weaverse.editor.update":var r=t.data.payload,s=r.background,a=e.itemInstances.get(r.itemId);a&&a.setData({style:{background:s}})}},this.appUrl=i||this.appUrl,this.projectKey=r||this.projectKey,s&&(this.projectData=s),this.init()}var e=t.prototype;return e.registerElement=function(t,e){this.elementInstances.set(t,e)},e.init=function(){var t=this;Object.keys(i).forEach((function(e){var n,r;(null==(n=i[e])||null==(r=n.configs)?void 0:r.type)&&t.registerElement(i[e].configs.type,i[e])})),this.subscribeMessageEvent()},e.subscribe=function(t){this.listeners.add(t)},e.unsubscribe=function(t){this.listeners.delete(t)},e.triggerUpdate=function(){this.listeners.forEach((function(t){return t()})),this.triggerEditorUpdate()},e.fetchProjectData=function(){return n(this.appUrl+"/api/public/"+this.projectKey).then((function(t){return t.json()}))},e.updateProjectData=function(){var t=this;this.projectKey&&this.fetchProjectData().then((function(e){e&&(t.projectData=e,t.initItemData(),t.triggerUpdate())})).catch((function(t){console.error(t)}))},e.subscribeMessageEvent=function(){var t=this;return"function"==typeof this.currentFrameSubscription&&this.currentFrameSubscription(),a&&window.addEventListener("message",this.handleMessageEvent),this.currentFrameSubscription=function(){a&&window.removeEventListener("message",t.handleMessageEvent)},this.currentFrameSubscription},e.triggerEditorUpdate=function(t){var e;void 0===t&&(t="weaverse.workspace.init"),this.isEditor&&(null==(e=window.top)||e.postMessage({type:t,payload:{projectKey:this.projectKey,projectData:this.projectData}},"*"))},e.initItemData=function(){var t=this,e=this.projectData;e.items&&e.items.forEach((function(e){var n=t.itemInstances.get(e.id)||new o(e,t);t.itemInstances.set(e.id,n)}))},t}(),o=function(t,n){var i=this;void 0===t&&(t={}),this.data={},this.listeners=new Set,this.setData=function(t){i.data=Object.assign(i.data,t),i.triggerUpdate()},this.subscribe=function(t){i.listeners.add(t)},this.unsubscribe=function(t){i.listeners.delete(t)},this.triggerUpdate=function(){i.listeners.forEach((function(t){return t(i.data)}))},this.useSubscription=function(t){e.useEffect((function(){return i.subscribe(t),function(){i.unsubscribe(t)}}),[])},this.data=t;var r=t.type;r&&(this.Component=n.elementInstances.get(r))},u=["id","type","childIds"],p=function(t){var n=t.itemInstance,i=t.elementInstances,s=t.context,a=e.useState(n.data),c=a[0],o=a[1],p=c.id,d=c.type,h=c.childIds,f=function(t,e){if(null==t)return{};var n,i,r={},s=Object.keys(t);for(i=0;i<s.length;i++)e.indexOf(n=s[i])>=0||(r[n]=t[n]);return r}(c,u);(0,n.useSubscription)((function(t){console.log("update",t),o(r({},t))}));var v=i.get(d);return v?e.createElement(v,Object.assign({key:p,"data-wv-id":p},f),Array.isArray(h)&&h.map((function(t){return e.createElement(l,{key:t,itemId:t,context:s})}))):null},l=function(t){var n=t.context,i=n.elementInstances,r=n.itemInstances.get(t.itemId);return r?e.createElement(p,{itemInstance:r,elementInstances:i,context:n}):e.createElement(e.Fragment,null)};exports.Weaverse=c,exports.WeaverseRoot=function(t){var n,i,r=t.context,s=t.defaultData,a=e.useState(r.projectData)[1];return e.useEffect((function(){var t=function(){a(r.projectData)};return r.subscribe(t),r.updateProjectData(),function(){r.unsubscribe(t)}}),[]),null!=(n=r.projectData)&&null!=(i=n.items)&&i.length||!s||(r.projectData=s,r.initItemData()),e.createElement(l,{itemId:0,context:r})};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e,t=require("react"),r=(e=t)&&"object"==typeof e&&"default"in e?e.default:e,n=require("@weaverse/core");function a(){return(a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function c(e,t){if(null==e)return{};var r,n,a={},c=Object.keys(e);for(n=0;n<c.length;n++)t.indexOf(r=c[n])>=0||(a[r]=e[r]);return a}var o=t.forwardRef((function(e,r){var n=t.useState(0),a=n[0],c=n[1];return t.createElement("button",Object.assign({ref:r},e,{onClick:function(){return c(a+1)}}),"Test Button ",a)}));o.defaultProps={style:{backgroundColor:"green",borderRadius:"9999px",fontSize:"13px",padding:"10px 15px"},type:"button",tag:"button"};var s=["tag","children"],u=function(e){var t=e.tag,n=e.children,o=c(e,s);return r.createElement(t,a({},o),n)};function i(e){return r.createElement("div",Object.assign({},e))}u.defaultProps={type:"base",tag:"div"},i.defaultProps={style:{},type:"grid"};var l={Button:o,BaseElement:u,Grid:i},d=["id","type","childIds","css","className"],f=function(e){var o=e.itemInstance,s=e.elementInstances,u=e.context,i=t.useState(o.data),l=i[0],f=i[1],v=l.id,m=l.type,b=l.childIds,g=l.css,y=l.className,j=c(l,d);t.useEffect((function(){var e=function(e){f(a({},e))};return o.subscribe(e),!o.ref.current&&n.isBrowser&&Object.assign(o.ref,{current:document.querySelector('[data-wv-id="'+v+'"]')}),function(){o.unsubscribe(e)}}),[]);var x=y||"";g&&(x+=" "+u.stitchesInstance.css(g)().className);var h=s.get(m);return h?(h.$$typeof===Symbol.for("react.forward_ref")&&(j.ref=o.ref),r.createElement(h,Object.assign({key:v,"data-wv-id":v},j,{className:x}),Array.isArray(b)&&b.map((function(e){return r.createElement(p,{key:e,itemId:e,context:u})})))):null},p=function(e){var t=e.context,n=t.elementInstances,a=t.itemInstances.get(e.itemId);return a?r.createElement(f,{itemInstance:a,elementInstances:n,context:t}):r.createElement(r.Fragment,null)};exports.WeaverseRoot=function(e){var n,c,o,s=e.context,u=e.defaultData,i=t.useState(s.projectData)[1];t.useEffect((function(){var e=function(){i(a({},s.projectData))};s.subscribe(e),s.updateProjectData();var t=s.loadStudio();return console.log("shouldRenderStudio",t),t&&e(),function(){s.unsubscribe(e)}}),[]),null!=(n=s.projectData)&&null!=(c=n.items)&&c.length||!u||(s.projectData=u,s.initItemData());var l=(null==s||null==(o=s.studioBridge)?void 0:o.handleProps)||{};return console.log("handleProps",l),r.createElement("div",Object.assign({},l),r.createElement(p,{itemId:0,context:s}))},exports.createRootContext=function(e){var t=new n.Weaverse(e);return Object.keys(l).forEach((function(e){var r,n;(null==(r=l[e])||null==(n=r.defaultProps)?void 0:n.type)&&t.registerElement(l[e].defaultProps.type,l[e])})),t};
2
2
  //# sourceMappingURL=sdk-react.cjs.production.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sdk-react.cjs.production.min.js","sources":["../src/utils/index.ts","../src/core.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 Elements from '@weaverse/elements'\nimport {useEffect} from 'react'\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\nexport class Weaverse {\n\telementInstances = new Map<string, any>()\n\titemInstances = new Map<string | number, WeaverseItemStore>()\n\tappUrl: string = 'http://localhost:3000'\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({\n\t\t\t\t\tappUrl,\n\t\t\t\t\tprojectKey,\n\t\t\t\t\tprojectData\n\t\t\t\t}: { appUrl?: string, projectKey?: string, projectData?: ProjectDataType } = {}) {\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\tObject.keys(Elements).forEach(key => {\n\t\t\t// @ts-ignore\n\t\t\tElements[key]?.configs?.type && this.registerElement(Elements[key].configs.type, Elements[key])\n\t\t})\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\tuseSubscription = (fn: any) => {\n\t\tuseEffect(() => {\n\t\t\tthis.subscribe(fn)\n\t\t\treturn () => {\n\t\t\t\tthis.unsubscribe(fn)\n\t\t\t}\n\t\t}, [])\n\t}\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'\nimport {useEffect} from 'react'\nimport {Weaverse} from './core'\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\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 let {useSubscription} = itemInstance\n useSubscription((update: any) => {\n console.log('update', update)\n setData({...update})\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}\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 {Weaverse, 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","Object","keys","Elements","forEach","key","configs","_this2","subscribeMessageEvent","subscribe","fn","listeners","add","unsubscribe","triggerUpdate","triggerEditorUpdate","fetchProjectData","fetch","then","r","json","updateProjectData","_this3","initItemData","err","console","error","currentFrameSubscription","addEventListener","handleMessageEvent","removeEventListener","_this4","top","postMessage","item","itemStore","_this5","id","WeaverseItemStore","itemData","weaverse","_this6","assign","useEffect","Component","Item","itemInstance","context","React","childIds","rest","useSubscription","update","log","Array","isArray","map","childId","RenderItem","defaultData","handleUpdate","_context$projectData","_context$projectData$","length"],"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/index.tsx"],"sourcesContent":["import * as React from 'react'\n\nexport const Button = React.forwardRef((props: any, ref) => {\n let [count, setCount] = React.useState(0)\n return <button ref={ref} {...props} onClick={() => setCount(count + 1)}>Test Button {count}</button>\n})\n\nButton.defaultProps = {\n style: {\n backgroundColor: 'green',\n borderRadius: '9999px',\n fontSize: '13px',\n padding: '10px 15px'\n },\n type: 'button',\n tag: 'button'\n}\n\nexport default Button","import React from 'react'\n\nexport const BaseElement = ({tag, children, ...props}: any) => {\n return React.createElement(tag, {\n ...props\n }, children)\n}\n\nBaseElement.defaultProps = {\n type: 'base',\n tag: 'div'\n}\nexport default BaseElement\n","import React from 'react'\n\nexport default function Grid(props: any) {\n return <div {...props} />\n}\n\nGrid.defaultProps = {\n style: {\n // display: 'grid',\n // outline: '1px solid red',\n },\n type: 'grid'\n}","import Button from './button'\nimport BaseElement from './base'\nimport Grid from './grid'\n\nconst elements = {\n Button,\n BaseElement,\n Grid\n}\nexport default elements","import React, {FC, useEffect, useState} from 'react'\nimport {isBrowser, Weaverse, WeaverseItemStore, WeaverseType} from '@weaverse/core'\nimport Elements from './elements'\n\n\nconst createRootContext = (configs: WeaverseType) => {\n const rootContext = new Weaverse(configs)\n // Register the element components\n Object.keys(Elements).forEach(key => {\n // @ts-ignore\n Elements[key]?.defaultProps?.type && rootContext.registerElement(Elements[key].defaultProps.type, Elements[key])\n })\n\n return rootContext\n}\n\nconst WeaverseRoot = ({context, defaultData}: { context: Weaverse, defaultData: any }) => {\n let [, setData] = useState<any>(context.projectData)\n useEffect(() => {\n let handleUpdate = () => {\n setData({...context.projectData})\n }\n context.subscribe(handleUpdate)\n context.updateProjectData()\n let shouldRenderStudio = context.loadStudio()\n console.log('shouldRenderStudio', shouldRenderStudio)\n if (shouldRenderStudio) {\n handleUpdate()\n }\n return () => {\n context.unsubscribe(handleUpdate)\n }\n }, [])\n if (!context.projectData?.items?.length && defaultData) {\n context.projectData = defaultData\n context.initItemData()\n }\n let handleProps = context?.studioBridge?.handleProps || {}\n console.log('handleProps', handleProps)\n return <div {...handleProps}>\n <RenderItem itemId={0} context={context}/>\n </div>\n}\n\ntype ItemProps = {\n itemInstance: WeaverseItemStore\n elementInstances: Map<string, FC>\n context: Weaverse\n}\n\n\nconst Item = ({itemInstance, elementInstances, context}: ItemProps) => {\n let [data, setData] = useState<any>(itemInstance.data)\n let {id, type, childIds, css, className, ...rest} = data\n useEffect(() => {\n let handleUpdate = (update: any) => {\n setData({...update})\n }\n itemInstance.subscribe(handleUpdate)\n if (!itemInstance.ref.current && isBrowser) {\n Object.assign(itemInstance.ref, {current: document.querySelector(`[data-wv-id=\"${id}\"]`)})\n }\n\n return () => {\n itemInstance.unsubscribe(handleUpdate)\n }\n }, [])\n\n let realClassName = className || ''\n if (css) {\n\n // let stitches create the style from css object and\n // then return the classname, so we can use it in the render\n let selector = (context.stitchesInstance.css(css)()).className\n\n realClassName += ' ' + selector\n }\n let Component = elementInstances.get(type)\n if (Component) {\n // @ts-ignore\n if (Component.$$typeof === Symbol.for('react.forward_ref')) {\n rest.ref = itemInstance.ref\n }\n return <Component key={id} data-wv-id={id} {...rest} className={realClassName}>\n {Array.isArray(childIds)\n && childIds.map(childId =>\n <RenderItem\n key={childId}\n itemId={childId}\n context={context}\n />\n )}\n </Component>\n }\n return null\n}\n\nconst RenderItem = ({itemId, context}: { itemId: number, context: any }): any => {\n let {itemInstances, elementInstances} = context\n let itemInstance = itemInstances.get(itemId)\n if (itemInstance) {\n return <Item itemInstance={itemInstance} elementInstances={elementInstances} context={context}/>\n }\n return <></>\n}\n\nexport {createRootContext, WeaverseRoot}\n"],"names":["Button","React","props","ref","count","setCount","onClick","defaultProps","style","backgroundColor","borderRadius","fontSize","padding","type","tag","BaseElement","children","createElement","Grid","elements","Item","itemInstance","elementInstances","context","useState","data","setData","id","childIds","css","className","rest","useEffect","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","shouldRenderStudio","loadStudio","console","log","_context$projectData","items","_context$projectData$","length","initItemData","handleProps","studioBridge","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,EAAc,gBAAED,IAAAA,IAAKE,IAAAA,SAAad,gBACtCD,EAAMgB,cAAcH,OACtBZ,GACFc,aCHmBE,EAAKhB,UACpBD,uCAASC,IDKlBa,EAAYR,aAAe,CACzBM,KAAM,OACNC,IAAK,OCJPI,EAAKX,aAAe,CAClBC,MAAO,GAIPK,KAAM,YCPFM,EAAW,CACfnB,OAAAA,EACAe,YAAAA,EACAG,KAAAA,gDC4CIE,EAAO,gBAAEC,IAAAA,aAAcC,IAAAA,iBAAkBC,IAAAA,UACvBC,WAAcH,EAAaI,MAA5CA,OAAMC,OACNC,EAA+CF,EAA/CE,GAAId,EAA2CY,EAA3CZ,KAAMe,EAAqCH,EAArCG,SAAUC,EAA2BJ,EAA3BI,IAAKC,EAAsBL,EAAtBK,UAAcC,IAAQN,KACpDO,aAAU,eACJC,EAAe,SAACC,GAClBR,OAAYQ,YAEdb,EAAac,UAAUF,IAClBZ,EAAalB,IAAIiC,SAAWC,aAC/BC,OAAOC,OAAOlB,EAAalB,IAAK,CAACiC,QAASI,SAASC,8BAA8Bd,UAG5E,WACLN,EAAaqB,YAAYT,MAE1B,QAECU,EAAgBb,GAAa,GAC7BD,IAMFc,GAAiB,IAFDpB,EAAQqB,iBAAiBf,IAAIA,EAA7BN,GAAqCO,eAInDe,EAAYvB,EAAiBwB,IAAIjC,UACjCgC,GAEEA,EAAUE,WAAaC,WAAW,uBACpCjB,EAAK5B,IAAMkB,EAAalB,KAEnBF,gBAAC4C,iBAAUI,IAAKtB,eAAgBA,GAAQI,GAAMD,UAAWa,IAC7DO,MAAMC,QAAQvB,IACJA,EAASwB,KAAI,SAAAC,UACRpD,gBAACqD,GACOL,IAAKI,EACLE,OAAQF,EACR9B,QAASA,SAK9B,MAGH+B,EAAa,gBAAU/B,IAAAA,QACPD,EAAoBC,EAApBD,iBAChBD,EADoCE,EAAnCiC,cAC4BV,MAFdS,eAGflC,EACKpB,gBAACmB,GAAKC,aAAcA,EAAcC,iBAAkBA,EAAkBC,QAASA,IAEjFtB,uDAvFY,sBAAEsB,IAAAA,QAASkC,IAAAA,YACvB/B,EAAWF,WAAcD,EAAQmC,gBACxC1B,aAAU,eACJC,EAAe,WACjBP,OAAYH,EAAQmC,eAEtBnC,EAAQY,UAAUF,GAClBV,EAAQoC,wBACJC,EAAqBrC,EAAQsC,oBACjCC,QAAQC,IAAI,qBAAsBH,GAC9BA,GACF3B,IAEK,WACLV,EAAQmB,YAAYT,MAErB,aACEV,EAAQmC,uBAARM,EAAqBC,QAArBC,EAA4BC,SAAUV,IACzClC,EAAQmC,YAAcD,EACtBlC,EAAQ6C,oBAENC,SAAc9C,YAAAA,EAAS+C,uBAAcD,cAAe,UACxDP,QAAQC,IAAI,cAAeM,GACpBpE,uCAASoE,GACdpE,gBAACqD,GAAWC,OAAQ,EAAGhC,QAASA,gCAnCV,SAACgD,OACnBC,EAAc,IAAIC,WAASF,UAEjCjC,OAAOoC,KAAKC,GAAUC,SAAQ,SAAA3B,qBAE5B0B,EAAS1B,gBAAM1C,uBAAcM,OAAQ2D,EAAYK,gBAAgBF,EAAS1B,GAAK1C,aAAaM,KAAM8D,EAAS1B,OAGtGuB"}